嘗試在 AWS CloudFormation 中建立 AWS::EC2::Instance 資源時,我收到「沒有 IAM 許可來處理 AWS::EC2::Instance 資源上的標籤」錯誤。
簡短說明
建立 AWS::EC2::Instance 資源且下列情況屬實時,您會收到此錯誤:
- 您可以在 CloudFormation 範本中為「標籤」內容指定值。
- AWS Identity and Access Management (IAM) 使用者、IAM 角色或 CloudFormation 服務角色沒有必要的 ec2:CreateTags 許可。
發生此錯誤時,即使資源標記為 CREATE_COMPLETE,使用「標籤」內容指定的自訂標籤也不會套用至 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 資源的「標籤」內容予以評論。然後,更新您的堆疊。
使用 CloudFormation 主控台:
在 CloudFormation 範本中,對「標籤」內容予以評論,然後更新您的堆疊。例如:
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 資源的「標籤」內容取消評論。然後,再次更新您的堆疊。
使用 CloudFormation 主控台:
在 CloudFormation 範本中,從「標籤」內容移除評論,然後更新您的堆疊。例如:
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. 從導覽窗格的「執行個體」區段中,選擇「執行個體」。
3. 選取透過 CloudFormation 建立的執行個體。
4. 選擇「標籤」索引標籤,然後檢查表格中是否已填入 CloudFormation 範本中指定的自訂標籤。
使用 AWS CLI:
執行 describe-tags 命令:
aws ec2 describe-tags —filters "Name=resource-id,Values=YOUR_INSTANCE_ID"
**注意事項:**將 YOUR_INSTANCE_ID 取代為您的堆疊中 EC2 執行個體的執行個體 ID。