Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

ecs-cli registry-creds up

生成 AWS Secrets Manager 密钥和 IAM 任务执行角色以在 Amazon ECS 任务定义中使用。

重要

Some features described may only be available with the latest version of the Amazon ECS CLI. For more information about obtaining the latest version, see 安装 Amazon ECS CLI.

语法

ecs-cli registry-creds up ./creds_input_file.yml --role-name value [--update-existing-secrets] [--no-role] [--no-output-value] [--output-dir value] [--help]

选项

名称 说明

./creds_input_file.yml

指定与私有注册表身份验证相关的值。有关更多信息,请参阅 使用私有注册表身份验证

必需:是

--role-name value

用于新任务执行角色的名称。如果该角色已存在,新策略将附加到现有角色。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

注意

我们建议创建特定于每个应用程序的新任务执行角色以避免向不需要密钥的应用程序授予对密钥的权限。

必需:是

--update-existing-secrets

指定是否应使用新凭证值更新现有密钥。

必需:否

--no-role

如果已指定,则不会创建任何任务执行角色。

必需:否

--no-output-file

如果已指定,则不会创建用于 compose 的输出文件。

必需:否

--output-dir value

应在其中创建输出文件的目录。如果没有指定,则在当前工作目录中创建该文件。

必需:否

--help, -h

Shows the help text for the specified command.

Required: No

使用私有注册表身份验证

当使用 ecs-cli registry-creds up 命令来管理您的私有注册表身份验证凭证时,使用输入文件来指定某些字段。在使用此命令时,您必须指定输入文件的文件名或路径。

目前,该文件支持以下架构:

version: 1 registry_credentials: registry_name: secrets_manager_arn: string username: string password: string kms_key_id: string container_names: - string

以下是对其中每个字段的描述。

registry_name

在创建新密钥或更新现有密钥时用作密钥名称。密钥名称应仅包含 ASCII 字母、数字或以下任意字符:/_+=.@-。Amazon ECS CLI 向密钥名称添加前缀以指示它是由 CLI 创建的。有关更多信息,请参阅 CreateSecret

必需:否

secrets_manager_arn

现有密钥的完整 ARN。用于指定或更新现有密钥。必须采用以下格式:

arn:aws:secretsmanager:region:aws_account_id:secret:secret_name

必需:否

username

指定私有注册表的用户名。我们建议对用户名使用环境变量,以确保输入文件中没有存储任何敏感信息。当使用环境变量时,请使用格式 ${VAR_NAME}

必需:否

password

指定私有注册表的密码。我们建议对密码使用环境变量,以确保输入文件中没有存储任何敏感信息。当使用环境变量时,请使用格式 ${VAR_NAME}

必需:否

kms_key_id

指定要用于加密密钥的 AWS KMS 客户主密钥 (CMK) 的 ARN、密钥 ID 或别名。有关更多信息,请参阅 CreateSecret

必需:否

container_names

对应于 Docker 复合文件中的服务名称。有关更多信息,请参阅 ecs-cli composeecs-cli compose service

必需:否

示例

使用私有注册表身份验证凭证创建密钥

此示例使用 creds_input.yml 输入文件中指定的私有注册表凭证创建密钥。

创建名为 creds_input.yml 的私有注册表凭证文件,其中包含私有注册表的用户名和密码以及将使用私有注册表凭证的容器的名称。我们建议对凭证使用环境变量,以确保输入文件中没有存储任何敏感信息。此文件中的容器名称对应于 Docker 复合文件中的服务名称 database

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - database

重要

我们建议对密码使用环境变量,以确保输入文件中没有存储任何敏感信息。如果您的输入文件包含敏感信息,请确保您在使用后将其删除。

创建密钥。此命令使用输入文件中的名称(在此示例中为 dockerhub)创建密钥。Amazon ECS CLI 向密钥名称添加前缀以指示它是由 CLI 创建的。还指定您的任务执行角色的名称。

ecs-cli registry-creds up ./creds_input.yml --role-name secretsTaskExecutionRole

输出:

INFO[0000] Processing credentials for registry dockerhub...
INFO[0000] New credential secret created: arn:aws:secretsmanager:region:aws_account_id:secret:amazon-ecs-cli-setup-dockerhub-VeDqXm
INFO[0000] Creating resources for task execution role ecsTaskExecutionRole...
INFO[0000] Created new task execution role arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole
INFO[0000] Created new task execution role policy arn:aws:iam::aws_account_id:policy/amazon-ecs-cli-setup-bugBashRole-policy-20181023T210805Z
INFO[0000] Attached AWS managed policy arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy to role ecsTaskExecutionRole
INFO[0001] Attached new policy arn:aws:iam::aws_account_id:policy/amazon-ecs-cli-setup-bugBashRole-policy-20181023T210805Z to role ecsTaskExecutionRole
INFO[0001] Writing registry credential output to new file C:\Users\brandejo\regcreds\regCredTest\ecs-registry-creds_20181023T210805Z.yml

通过此命令创建一个输出文件,其中包含任务执行角色名称、创建的密钥的 ARN 和容器名称。在使用 ecs-cli composeecs-cli compose service 命令时,使用 --registry-creds 选项指定此文件。有关更多信息,请参阅 ecs-cli composeecs-cli compose service

下面是一个示例输出文件:

version: "1"
registry_credential_outputs:
  task_execution_role: secretsTaskExecutionRole
  container_credentials:
    dockerhub:
      credentials_parameter: arn:aws:secretsmanager:region:aws_account_id:secret:amazon-ecs-cli-setup-dockerhub-bbHiEk
      container_names:
      - database

通过使用 KMS 密钥的私有注册表身份验证凭证创建密钥

此示例通过 creds_input.yml 输入文件中指定的使用 KMS 密钥加密的私有注册表凭证创建密钥。

创建名为 creds_input.yml 的私有注册表凭证文件,其中包含私有注册表的用户名和密码以及将使用私有注册表凭证的容器的名称。我们建议对凭证使用环境变量,以确保输入文件中没有存储任何敏感信息。在存储密钥时,指定的 KMS 密钥 ARN 会对值进行加密。此文件中的容器名称对应于 Docker 复合文件中的服务名称 database

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} kms_key_id: kmsKeyARN container_names: - database

重要

我们建议对密码使用环境变量,以确保输入文件中没有存储任何敏感信息。如果您的输入文件包含敏感信息,请确保您在使用后将其删除。

为多个私有注册表创建多个密钥

此示例使用私有注册表凭证为多个注册表创建多个密钥。

创建名为 creds_input.yml 的私有注册表凭证文件,其中包含来自两个不同私有注册表的凭证。每组凭证用于创建自己的密钥。此示例还显示了使用一个密钥的两个不同的容器。

version: '1' registry_credentials: dockerhub: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - prod - dev quay.io: username: ${MY_REPO_USERNAME} password: ${MY_REPO_PASSWORD} container_names: - database

重要

我们建议对密码使用环境变量,以确保输入文件中没有存储任何敏感信息。如果您的输入文件包含敏感信息,请确保您在使用后将其删除。