簡體   English   中英

創建啟用 ssm 的 ec2 實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM