引用环境变量 - AWS App Runner

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

引用环境变量

借助 App Runner,您可以在创建服务或更新服务时将机密和配置作为服务中的环境变量引用。

您可以将非敏感配置数据(例如超时和重试次数)以纯文本形式引用为键值对。您在纯文本中引用的配置数据未经过加密,其他人可以在 App Runner 服务配置和应用程序日志中看到这些数据。

注意

出于安全考虑,请勿在 App Runner 服务中以纯文本形式引用任何敏感数据。

将敏感数据引用为环境变量

App Runner 支持在服务中安全地将敏感数据引用为环境变量。考虑将要引用的敏感数据存储在我们的 P AWS Systems Manager arameter St AWS Secrets Managerore 中。然后,您可以从 App Runner 控制台或通过调用 API 在服务中安全地将它们作为环境变量引用。这可以有效地将密钥和参数管理与应用程序代码和服务配置分开,从而提高在 App Runner 上运行的应用程序的整体安全性。

注意

App Runner 不会因为将 Secrets Manager 和 SSM Parameter Store 引用为环境变量而向你收取费用。但是,使用 Secrets Manager 和 SSM Parameter Store 需要支付标准价格。

有关定价的更多信息,请参阅以下内容:

以下是将敏感数据作为环境变量引用的过程:

  1. 将敏感数据(例如 API 密钥、数据库凭据、数据库连接参数或应用程序版本)作为机密或参数存储在任一 AWS Secrets Manager 或 Paramet AWS Systems Manager er Store 中。

  2. 更新您的实例角色的 IAM 策略,这样 App Runner 就可以访问存储在 Secrets Manager 和 SSM Parameter Store 中的机密和参数。有关更多信息,请参阅 权限

  3. 通过指定名称并提供其 Amazon 资源名称 (ARN),将密钥和参数安全地引用为环境变量。您可以在创建服务或更新服务配置时添加环境变量。您可以使用以下选项之一来添加环境变量:

    • 应用程序运行器控制台

    • 应用程序运行器 API

    • apprunner.yaml 配置文件

    注意

    在创建或更新 PORT App Runner 服务时,不能将环境变量指定为名称。它是 App Runner 服务的预留环境变量。

    有关如何引用密钥和参数的更多信息,请参阅管理环境变量

注意

由于 App Runner 仅存储对机密和参数 ARN 的引用,因此其他人无法在 App Runner 服务配置和应用程序日志中看到敏感数据。

注意事项

  • 请务必更新您的实例角色,使其具有访问参数存储中 AWS Secrets Manager 或其中的密钥和 AWS Systems Manager 参数的相应权限。有关更多信息,请参阅 权限

  • 确保 AWS Systems Manager Parameter Store AWS 账户 与您要启动或更新的服务位于同一位置。目前,您无法跨账户引用 SSM 参数存储参数。

  • 轮换或更改密钥和参数值时,它们不会在您的 App Runner 服务中自动更新。重新部署你的 App Runner 服务,因为 App Runner 在部署期间仅提取机密和参数。

  • 您还可以选择通过 App Runner 服务中的 SDK 直接调用 AWS Secrets Manager 和 P AWS Systems Manager arameter Store。

  • 为避免错误,在将它们引用为环境变量时,请确保以下几点:

    • 您可以指定密钥的正确 ARN。

    • 您可以指定参数的正确名称或 ARN。

权限

要启用引用存储在 AWS Secrets Manager 或 SSM Parameter Store 中的密钥和参数,请向您的实例角色的 IAM 策略添加相应的权限,以访问 Secrets Manager 和 SSM Parameter Store。

注意

未经您的许可,App Runner 无法访问您账户中的资源。您可以通过更新您的 IAM 政策来提供权限。

您可以使用以下策略模板在 IAM 控制台中更新您的实例角色。您可以修改这些策略模板以满足您的特定要求。有关更新实例角色的更多信息,请参阅 IAM 用户指南中的修改角色

注意

创建环境变量时,您也可以从 App Runner 控制台复制以下模板。

将以下模板复制到您的实例角色中,以添加引用密钥的权限AWS Secrets Manager

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt*" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

将以下模板复制到您的实例角色,以添加从 P AWS Systems Managerarameter Store 引用参数的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>" ] } ] }