60072


以下のようなコマンドをメンテナンスウインドの cron で各 EC2
に実行して定期バックアップを作成しようと思っているのですが、一部のEC2でcreaeImageの権限がないと言われて失敗します

[code]

    AMIDATE=`date "+%Y%m%d"`
    EC2ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
    NAME=`curl -s http://169.254.169.254/latest/meta-data/security-groups`
    REGION=ap-northeast-1
    
    aws ec2 create-image \
      --region $REGION \
      --instance-id $EC2ID \
      --name "$NAME-AMI-$AMIDATE-$EC2ID" \
      --description "$NAME-AMI-$AMIDATE-$EC2ID" \
      --no-reboot
    
[/code]

エラーメッセージ

[code]

    An error occurred (UnauthorizedOperation) when calling the CreateImage operation: You are not authorized to perform this operation.
    
    failed to run commands: exit status 255
    
[/code]

心当たりがあるとすれば  
その失敗する EC2 は別オーガニゼーションのAMIからたてたものなのですが  
EC2自体は現環境で動いていて、現環境にイメージを作成するのに、  
ソースのAMIの出どころで失敗する理由はない気がします

成功するEC2もあるので実行するタスクの権限は問題ないはずなのですが  
それともなにか別の原因があるのでしょうか

原因に心当たりがある方いらっしゃったら助けていただきたいです

## 追記

EC2のAWSコンソール画面のパラメータは  
上の方のネットワーク関連 ID 予約 起動時刻 インスタンスタイプ  
以外イメージにかかわってきそうな箇所はすべて同じです

インスタンスタイプは成功したのが t2.medium, c5.large  
失敗したのが t3.medium です

あと作成される側の EC2Role が関係してるかはわかりませんが  
失敗したEC2には以下の Ahena 用の policy が１つ追加で存在していて  
それ以外は成功した Role と同じ policy でした

Deny を付与してるわけではないのでこのポリシーでイメージの可否に影響があるのでしょうか

[code]

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "athena:*"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "glue:CreateDatabase",
                    "glue:DeleteDatabase",
                    "glue:GetDatabase",
                    "glue:GetDatabases",
                    "glue:UpdateDatabase",
                    "glue:CreateTable",
                    "glue:DeleteTable",
                    "glue:BatchDeleteTable",
                    "glue:UpdateTable",
                    "glue:GetTable",
                    "glue:GetTables",
                    "glue:BatchCreatePartition",
                    "glue:CreatePartition",
                    "glue:DeletePartition",
                    "glue:BatchDeletePartition",
                    "glue:UpdatePartition",
                    "glue:GetPartition",
                    "glue:GetPartitions",
                    "glue:BatchGetPartition"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "s3:GetBucketLocation",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:ListMultipartUploadParts",
                    "s3:AbortMultipartUpload",
                    "s3:CreateBucket",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::aws-athena-query-results-*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::athena-examples*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:ListAllMyBuckets"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "sns:ListTopics",
                    "sns:GetTopicAttributes"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "cloudwatch:PutMetricAlarm",
                    "cloudwatch:DescribeAlarms",
                    "cloudwatch:DeleteAlarms"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "lakeformation:GetDataAccess"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": "athena:*",
                "Resource": "*"
            }
        ]
    }
    
[/code]


CC BY-SA 4.0
2019-10-28T12:08:21.183
60042
2019-10-29T09:39:02.883
2019-10-29T02:37:04.993
question
aws amazon-ec2
AWS EC2 で AMI 作成に失敗する原因


メンテナンスウインドは内部にはいってコマンドを実行するみたいで  
.aws/config が存在するために EC2 Role ではなく config ユーザの権限で動いていました

Role の設定項目があるので  
Lambda のように外部から実行するようなものかと思っていました


CC BY-SA 4.0
2019-10-29T09:39:02.883
60072
2019-10-29T09:39:02.883
60042
answer