![](/img/trans.png)
[英]SSM Secure reference is not supported in: AWS::EC2::Instance/Metadata
[英]create ec2 instance with ssm enabled
我正在創建一個附加了 SSM 的 EC2 實例。
def createInstances(self):
instances = self.ec2_client.create_instances(
ImageId="ami-09e67e426f25ce0d7", # Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
MinCount=1,
MaxCount=1,
InstanceType="m4.2xlarge",
KeyName="ec2-key-pair",
IamInstanceProfile={
'Arn': 'arn:aws:iam::aws:instance-profile/AmazonEC2RoleforSSM',
'Name': 'AmazonEC2RoleforSSM'
},
DryRun=True,
TagSpecifications=[
{
'ResourceType': 'instance',
'Tags': [
{
'Key': 'department',
'Value': 'dev'
},
]
},
],
)
print(instances["Instances"][0])
我收到一個錯誤:
botocore.exceptions.ClientError: An error occurred (InvalidParameterCombination) when calling the RunInstances operation: The parameter 'iamInstanceProfile.name' may not be used in combination with 'iamInstanceProfile.arn'
當我刪除“iamInstanceProfile.name”時,出現另一個錯誤:
botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the RunInstances operation: Value (arn:aws:iam::aws:instance-profile/AmazonEC2RoleforSSM) for parameter iamInstanceProfile.arn is invalid. Invalid IAM Instance Profile ARN
我認為有幾件事正在發生。 首先,您必須在您的帳戶中為 SSM 創建實例配置文件。 它不是您可以參考的由 AWS 管理的標准資源。 如果您還沒有,請參閱SSM setup instructions for creating an instance profile 。 如此處所述,如果您通過 SSM 快速設置,它會為您創建實例配置文件。 它的 ARN 可能是arn:aws:iam::[your_account_number]:instance-profile/AmazonSSMRoleForInstancesQuickSetup
。 如果您尚未完成 SSM 快速設置,則需要完成或自行創建角色和實例配置文件。
請注意,如果您通過控制台創建角色,控制台會為您創建一個與角色同名的實例配置文件(如果該角色與 EC2 相關聯)。 如果您使用 CLI、API 或 CDK 創建角色,則需要單獨創建實例配置文件。 無論哪種方式,您都需要為角色分配正確的 IAM 策略。
其次,盡管有名稱,但AmazonEC2RoleforSSM
是一個 IAM Policy ,而不是一個角色......並且它已被棄用。 它已被一組策略所取代,這些策略對 SSM 權限提供更細粒度的控制。 有關詳細信息,請參閱有關托管實例策略最佳實踐的AWS 管理和治理博客。 因此,當您設置角色時,您需要為其分配適當的 SSM 策略。
試試IamInstanceProfile = { 'Name': 'AmazonEC2RoleforSSM' }
。
您的實例配置文件 ARN 確實無效。 它應該是arn:aws:iam::XXXXXXXXXXXX:instanceprofile/AmazonEC2RoleforSSM
,其中 XXXXXXXXXXXX 代表您的 AWS 帳號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.