SSM 发送命令失败,是否可以从一个 aws 帐户向另一个帐户运行 ssm 命令

时间:2021-06-15 09:45:54

标签: amazon-web-services amazon-ec2 jenkins-pipeline amazon-ssm-agent

我在帐户 A 中有 Jenkins 节点,用于构建 Angular 应用程序 为了部署 dist 文件夹,我需要将文件从 s3 复制到 angular 实例。 但角度实例在账户 B

脚本:

aws --region us-west-2 ssm 发送命令 --instance-ids i-xxxxxx --document-name AWS-RunShellScript --comment '从管道 xxx-release-pipeline 部署' --cloud-watch-output-config 'CloudWatchOutputEnabled=true,CloudWatchLogGroupName=SSMDocumentRunLogGroup' --parameters '{"commands":["aws --region us-west-2 s3 cp s3://xxxx/dist/*.zip /var/www/demo.com/html", "unzip -q * 。压缩”]}' --output text --query Command.CommandId

因此,当我从节点(在帐户 A 中)运行 ssm send-command 时,它显示实例 ID 无效。

调用 SendCommand 操作时发生错误 (InvalidInstanceId)

Jenkins 节点 -> 账户 A Angular Instance(with ssm agent) -> Account B

在部署阶段的管道中,我需要将文件从 s3 复制到帐户 B 中的实例 有没有办法在有或没有 ssm 的情况下以更好的方式实现这个用例?

1 个答案:

答案 0 :(得分:1)

我认为您不能直接跨帐户运行 run-command。但是你可以通过 AWS Systems Manager Automation 跑进来。在您的自动化文档中,您可以使用 aws:runCommand

这是可能的,因为 SSM 自动化 supports cross-account and cross-region deployments