使用 Parameter Store 中的共享参数
共享高级参数可简化多账户环境中的配置数据管理操作。您可以集中存储和管理参数,与需要引用这些参数的其他 Amazon Web Services 账户 共享参数。
Parameter Store 与 Amazon Resource Access Manager(Amazon RAM)集成,可实现高级参数共享。Amazon RAM 是一项服务,让您能够与其他 Amazon Web Services 账户 共享资源,或者通过 Amazon Organizations 共享资源。
通过使用 Amazon RAM,您可以创建资源共享以共享您拥有的资源。资源共享指定要共享的资源、要授予的权限以及与之共享资源的使用者。使用者可包括:
-
Amazon Organizations 中其组织内部或外部的特定 Amazon Web Services 账户。
-
Amazon Organizations 中的所有者组织内部的组织单位
-
它在 Amazon Organizations 中的整个组织
有关 Amazon RAM 的更多信息,请参阅 Amazon RAM 用户指南。
本主题说明如何共享您拥有的参数以及如何使用共享给您的参数。
共享参数的先决条件
要共享账户中的参数,就必须先满足以下先决条件:
-
要共享参数,您必须在 Amazon Web Services 账户 中拥有该参数。您无法共享已与您共享的参数。
-
要共享参数,该参数就必须在高级参数层中。有关参数层的信息,请参阅 管理参数层。有关将现有标准参数更改为高级参数的信息,请参阅 将标准参数更改为高级参数。
-
要共享
SecureString
参数,必须使用客户托管密钥对其进行加密,并且必须通过 Amazon Key Management Service 单独共享该密钥。无法共享 Amazon 托管式密钥。使用默认 Amazon 托管式密钥 加密的参数可以更新为改用客户托管密钥。有关 Amazon KMS 密钥的定义,请参阅《Amazon Key Management Service Developer Guide》中的 Amazon KMS concepts。 -
要与组织或 Amazon Organizations 内的组织单位共享参数,您必须允许与 Amazon Organizations 共享。有关更多信息,请参阅Amazon RAM《用户指南》中的允许与 Amazon Organizations 共享。
共享参数
要共享参数,您必须将其添加到资源共享。资源共享是一项 Amazon RAM 资源,可让您跨 Amazon Web Services 账户 共享资源。资源共享指定要共享的资源以及与之共享资源的使用者。
在与其他 Amazon Web Services 账户 共享自己拥有的参数时,您可以从两个 Amazon 托管权限中进行选择,授予使用者相应权限。有关更多信息,请参阅 共享参数的权限集。
如果您属于 Amazon Organizations 内的某个组织,并启用了组织内共享,则您可以授予组织中的使用者从 Amazon RAM 控制台访问共享参数的权限。否则,使用者会收到加入资源共享的邀请,并在接受邀请后获得对共享参数的访问权限。
您可以使用 Amazon RAM 控制台或 Amazon CLI 共享自己拥有的参数。
注意
虽然可以使用 Systems Manager PutResourcePolicy API 操作共享参数,但建议使用 Amazon Resource Access Manager(Amazon RAM)。这是因为使用 PutResourcePolicy
需要执行额外步骤,即使用 Amazon RAM PromoteResourceShareCreatedFromPolicy API 操作将参数提升为标准资源共享。否则,Systems Manager DescribeParameters API 操作不会使用 --shared
选项返回该参数。
使用 Amazon RAM 控制台共享拥有的参数
请参阅《Amazon RAM 用户指南》中的在 Amazon RAM 中创建资源共享。
完成该过程时进行以下选择:
-
在“步骤 1”页面中,对于资源,选择
Parameter Store Advanced Parameter
,然后选中要共享的高级参数层中每个参数的框。 -
在“步骤 2”页面中,对于托管式权限,选择要授予使用者的权限,如本主题后面部分的 共享参数的权限集 中所述。
根据您的参数共享目标选择其他选项。
使用 Amazon CLI 共享拥有的参数
使用 create-resource-share 命令向新的资源共享添加参数。
使用 associate-resource-share 命令向现有资源共享添加参数。
以下示例创建了一个新的资源共享,以便与组织和个人账户中的使用者共享参数。
aws ram create-resource-share \ --name "MyParameter" \ --resource-arns "arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter" \ --principals "arn:aws:organizations::123456789012:ou/o-63bEXAMPLE/ou-46xi-rEXAMPLE" "987654321098"
停止共享共享参数
停止共享共享参数后,使用者账户无法再访问该参数。
要停止共享拥有的参数,必须从资源共享中将其移除。您可以使用 Systems Manager 控制台、Amazon RAM 控制台或 Amazon CLI 完成此操作。
使用 Amazon RAM 控制台停止共享拥有的参数
请参阅《Amazon RAM User Guide》中的 Update a resource share in Amazon RAM。
使用 Amazon CLI 停止共享拥有的参数
使用 disassociate-resource-share 命令。
标识共享参数
拥有者和使用者可以使用 Amazon CLI 标识共享参数。
使用 Amazon CLI 标识共享参数
要使用 Amazon CLI 标识共享参数,可以选用 Systems Manager describe-parameters
命令或 Amazon RAM list-resources
命令。
在将 --shared
选项与 describe-parameters
一起使用后,该命令会返回与您共享的参数。
以下是 示例:
aws ssm describe-parameters --shared
访问共享参数
使用者可以使用 Amazon 命令行工具和 Amazon SDK 访问共享参数。对于使用者账户,与该类账户共享的参数未包含在我的参数页面中。
CLI 示例:使用 Amazon CLI 访问共享参数的详细信息
要使用 Amazon CLI 访问共享参数的详细信息,可以使用 get-parameter 或 get-parameters 命令。必须将完整参数 ARN 指定为 --name
,才能从其他账户检索参数。
示例如下:
aws ssm get-parameter \ --name arn:aws:ssm:us-east-2:123456789012:parameter/MySharedParameter
共享参数支持和不支持的集成
目前可在以下集成场景中使用共享参数:
-
Amazon CloudFormation 模板参数
-
使用 EC2 RunInstances 命令从 Amazon Machine Image(AMI)创建实例的
ImageID
值 -
针对 Systems Manager 的 Automation 功能,在运行手册中检索参数值
以下场景和集成服务目前不支持使用共享参数:
共享参数的权限集
使用者账户收到您与其共享参数的只读访问权限。使用者无法更新或删除该类参数。使用者无法与第三个账户共享该类参数。
在 Amazon Resource Access Manager 中创建用于共享参数的资源共享时,可以从两个 Amazon 托管式权限集中进行选择,以授予此只读访问权限:
- AWSRAMDefaultPermissionSSMParameterReadOnly
-
允许的操作:
DescribeParameters
、GetParameter
、GetParameters
- AWSRAMPermissionSSMParameterReadOnlyWithHistory
-
允许的操作:
DescribeParameters
、GetParameter
、GetParameters
、GetParameterHistory
按照《Amazon RAM 用户指南》中在 Amazon RAM 中创建资源共享的步骤进行操作时,选择 Parameter Store Advanced
Parameters
作为资源类型,并根据您是否希望用户查看参数历史记录选择其中一种托管式权限。
共享参数的最大吞吐量
Systems Manager 限制了 GetParameter 和 GetParameters 操作的最大吞吐量(每秒事务数)。吞吐量在个人账户级别强制实施。因此,使用共享参数的每个账户都可以使用允许的最大吞吐量,不会受到其他账户的影响。有关参数最大吞吐量的更多信息,请参阅以下主题:
-
《Amazon Web Services 一般参考》中的 Systems Manager service quotas。
共享参数的定价
只有高级参数层中支持跨账户共享。对于高级参数,每个高级参数的存储和 API 使用量按当前价格计费。高级参数的拥有账户需要支付此类参数的存储费用。对共享的高级参数进行 API 调用的使用账户,则需支付此类参数的使用费。
例如,账户 A 创建了高级参数 MyAdvancedParameter
,则该账户每月需支付 0.05 美元来存储该参数。
然后,账户 A 与账户 B 和账户 C 共享 MyAdvancedParameter
。在一个月内,这三个账户都会调用 MyAdvancedParameter
。下表说明了各账户因调用次数产生的费用。
注意
下表列示的费用仅供说明之用。要验证当前定价,请参阅 Parameter Store 的 Amazon Systems Manager 定价
帐户 | 调用次数 | 收费 |
---|---|---|
账户 A(拥有账户) | 一万次调用 |
|
账户 B(使用账户) | 两万次调用 |
|
账户 C(使用账户) | 三万次调用 |
|
已关闭 Amazon Web Services 账户 的跨账户访问权限
如果拥有共享参数的 Amazon Web Services 账户 已关闭,则所有使用账户都会失去对共享参数的访问权限。如果拥有账户在账户关闭后的 90 天内重新打开,则使用账户会重新获得对先前共享参数的访问权限。有关在关闭后期间重新打开账户的更多信息,请参阅《Amazon Account Management Reference Guide》中的 Accessing your Amazon Web Services 账户 after you close it。