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

ecs-cli registry-creds up

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

重要

所介绍的某些功能仅可用于最新版本的 Amazon ECS CLI。有关获取最新版本的更多信息,请参阅 安装 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] [--tags key1=value1,key2=value2] [--help]

选项

名称 描述

./creds_input_file.yml

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

必需:是

--role-name value

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

注意

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

必需:是

--update-existing-secrets

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

必需:否

--no-role

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

必需:否

--no-output-file

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

必需:否

--output-dir value

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

必需:否

--tags key1=value1,key2=value2

指定要用于您的 AWS 资源的元数据。每一个标签都包含一个键和一个可选值。标签采用以下格式:key1=value1,key2=value2,key3=value3。有关更多信息,请参阅 标记资源

类型:键值对

必需:否

--help, -h

显示指定命令的帮助文本。

必需:否

使用私有注册表身份验证

当使用 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

必需:否

标记资源

Amazon ECS CLI 支持以资源标签的形式将元数据添加到您的 AWS 资源。每一个标签都包含一个键和一个可选值。资源标签可用于成本分配、自动化和访问控制。有关更多信息,请参阅 AWS 标记策略

使用 ecs-cli registry-creds up 命令时,使用 --tags 标记让您可以将元数据标签添加到 Secrets Manager 密钥,然后添加到 IAM 角色。

注意

将标记您账户内的现有 Secrets Manager 密钥,但只有 IAM 角色才能在创建过程中进行标记。如果您使用的是现有 IAM 角色,则无法添加新标签。

示例

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

此示例使用 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

重要

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