AWS CloudFormation で AWS::EC2::Instance リソースを作成しようとすると、「AWS::EC2::Instance リソースでタグを処理するための IAM アクセス権限がありませんでした」というエラーが表示されます。
簡単な説明
このエラーは、AWS::EC2::Instance リソースを作成する場合に、次の条件に該当すると表示されます。
- CloudFormation テンプレートで、Tags プロパティの値を指定している。
- AWS Identity and Access Management (IAM) ユーザー、IAM ロール、または CloudFormation サービスロールに、必要な ec2:CreateTags アクセス権限がない。
このエラーが発生した場合、リソースが CREATE_COMPLETE とマークされていても、Tags プロパティを使用して指定されたカスタムタグは EC2 インスタンスに適用されません。
注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新のバージョンの AWS CLI を使用していることを確認してください。
解決方法
1. CloudFormation スタックを作成する IAM ユーザー、IAM ロール、または CloudFormation サービスロールに、影響を受ける EC2 インスタンスで ec2:CreateTags および ec2:DeleteTags を実行するためのアクセス権限があることを確認します。
2. CloudFormation コンソールまたは AWS CLI を使用して、影響を受ける CloudFormation テンプレートの AWS::EC2::Instance リソースの Tags プロパティをコメントアウトします。その後、スタックを更新します。
CloudFormation コンソールを使用して、以下の操作を実行します。
CloudFormation テンプレートで、Tags プロパティをコメントアウトして、スタックを更新します。例:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
# Tags:
# - Key: key1
# Value: value1
# - Key: key2
# Value: value2
AWS CLI を使用して、以下の操作を実行します。
update-stack コマンドを実行します。
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_COMMENTED —stack-name YOUR_STACK_NAME
注: YOUR_REGION、YOUR_TEMPLATE_FILE_TAGS_COMMENTED、および YOUR_STACK_NAME を自分の値に置き換えてください。
3. CloudFormation コンソールまたは AWS CLI を使用して、影響を受ける CloudFormation テンプレートの AWS::EC2::Instance リソースの Tags プロパティのコメントを解除します。その後、もう一度スタックを更新します。
CloudFormation コンソールを使用して、以下の操作を実行します。
CloudFormation テンプレートで、Tags プロパティからコメントを削除して、スタックを更新します。例:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
Tags:
- Key: key1
Value: value1
- Key: key2
Value: value2
AWS CLI を使用して、以下の操作を実行します。
update-stack コマンドを実行します。
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED —stack-name YOUR_STACK_NAME
注: YOUR_REGION、YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED、および YOUR_STACK_NAME を自分の値に置き換えてください。
4. EC2 コンソールまたは AWS CLI を使用して、タグが Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに正しく適用されているかどうかを確認します。
Amazon EC2 コンソールを使って以下を実行します。
1. Amazon EC2 コンソールを開きます。
2. ナビゲーションペインの [Instances] (インスタンス) セクションで、[Instances] (インスタンス) を選択します。
3. CloudFormation を使用して作成されたインスタンスを選択します。
4. [Tags] (タグ) タブを選択し、CloudFormation テンプレートで指定されているカスタムタグがテーブルに入力されているかどうかを確認します。
AWS CLI を使用して、以下の操作を実行します。
describe-tags コマンドを実行します。
aws ec2 describe-tags —filters "Name=resource-id,Values=YOUR_INSTANCE_ID"
注: YOUR_INSTANCE_ID は、スタックの EC2 インスタンスのインスタンス ID に置き換えます。