【问题标题】:Ec2 calling CLI from user dataEc2 从用户数据调用 CLI
【发布时间】:2022-01-21 16:56:10
【问题描述】:

在启动 ec2 实例时,如何在 user data shell 脚本中使用 CLI 命令?

当我通过 SSH 连接到实例时,我可以运行 CLI 命令并且一切都按预期工作。

我假设问题是 user data 以 root 身份执行。当我通过 SSH 进入实例并运行 CLI 命令时,我以 ec2-user 身份执行此操作。

考虑到每次我想测试我的新 user data 脚本时都必须启动一个实例(每次尝试需要 3 分钟),我真的很感激不必猜测和检查我的方式。

任何帮助都是合适的。谢谢你

【问题讨论】:

    标签: amazon-web-services ssh amazon-ec2 aws-cli


    【解决方案1】:
    1. 您新启动的实例需要能够访问您尝试使用的命令。我建议您添加 IAM 角色设置并添加到实例中。这将为您节省凭据等的设置...示例 IAM 政策:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "ec2:DescribeTags",
                    "ec2:CreateTags"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ]
            }
        ]
    }
    
    1. Ubuntu 示例用户数据
    #!/bin/bash -x
    
    apt-get update
    apt-get install -y awscli # yum install awscli on CentOS based OS
        
    REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed s/.$//g)
    I_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
    aws_p="$(which aws) --region ${REGION} --output text"
    $aws_p ec2 create-tags --resources $I_ID --tags Key=Name,Value=my-test-server --region $REGION
    # ............ more stuff related to your deployment ..... #
    

    这将在系统上安装 awscli 并用测试名称标记自己。

    查看如何添加正确的IAM roles

    【讨论】:

    • 这不起作用,cloud-init 脚本和 apt-get install 之间存在某种竞争条件
    • 如果您使用的操作系统与 ubuntu 不同,则必须使用正确的安装命令。就像基于 CentOS 的操作系统的“yum”。该命令还假定您的 user_data 由 root 执行。否则你可以使用 sudo。
    猜你喜欢
    • 2016-04-02
    • 2016-12-24
    • 2018-05-24
    • 2021-05-19
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多