通过 AWS 中的主账户发布短信
Publish SMS messages through master account in AWS
我们在 AWS 上设置了多账户。有一个主帐户和用于开发、登台和生产的独立帐户。我们已启用在主帐户上发送短信(退出短信沙箱)。
我现在想从开发者帐户通过主帐户发送短信。在标准情况下,我只会向正确的 ARN 发布一条消息(并提前确保存在适当的权限)。但是,在发送 SMS 消息时,没有 ARN,所以我被卡住了。有办法实现吗?
作为参考,这是我如何在 dev 上发送消息(沙盒模式开启):
client = boto3.client("sns")
try:
client.publish(
PhoneNumber=recipient,
Message=message,
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': sender
}
}
)
except botocore.exceptions.ClientError as error: # noqa
logger.error(f'An error occurred while sending SMS message: {error}')
有没有办法定位不同的帐户?我正在考虑提供 aws_access_key_id
和 aws_secret_access_key
但也许还有另一种方法?
你应该:
- 在有权发送 SMS 消息的主账户中创建 IAM 角色,以及允许 IAM 角色成为子账户'assumed'的信任策略
- 向子账户中的适当 IAM 用户或 IAM 角色授予权限,以承担主账户中的 IAM 角色
- 代码随后会调用
AssumeRole()
以从主账户承担 IAM 角色,然后使用返回的凭据发送 SMS 消息
我们在 AWS 上设置了多账户。有一个主帐户和用于开发、登台和生产的独立帐户。我们已启用在主帐户上发送短信(退出短信沙箱)。
我现在想从开发者帐户通过主帐户发送短信。在标准情况下,我只会向正确的 ARN 发布一条消息(并提前确保存在适当的权限)。但是,在发送 SMS 消息时,没有 ARN,所以我被卡住了。有办法实现吗?
作为参考,这是我如何在 dev 上发送消息(沙盒模式开启):
client = boto3.client("sns")
try:
client.publish(
PhoneNumber=recipient,
Message=message,
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': sender
}
}
)
except botocore.exceptions.ClientError as error: # noqa
logger.error(f'An error occurred while sending SMS message: {error}')
有没有办法定位不同的帐户?我正在考虑提供 aws_access_key_id
和 aws_secret_access_key
但也许还有另一种方法?
你应该:
- 在有权发送 SMS 消息的主账户中创建 IAM 角色,以及允许 IAM 角色成为子账户'assumed'的信任策略
- 向子账户中的适当 IAM 用户或 IAM 角色授予权限,以承担主账户中的 IAM 角色
- 代码随后会调用
AssumeRole()
以从主账户承担 IAM 角色,然后使用返回的凭据发送 SMS 消息