通过 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_idaws_secret_access_key 但也许还有另一种方法?

你应该:

  • 在有权发送 SMS 消息的主账户中创建 IAM 角色,以及允许 IAM 角色成为子账户'assumed'的信任策略
  • 向子账户中的适当 IAM 用户或 IAM 角色授予权限,以承担主账户中的 IAM 角色
  • 代码随后会调用 AssumeRole() 以从主账户承担 IAM 角色,然后使用返回的凭据发送 SMS 消息