我正在使用python boto3为子帐户(而不是root帐户)创建CloudWatch警报。我已将该子帐户的帐户ID存储在名为 accnum 的变量中。一旦它超过CPU%10,我需要在该子帐户中停止ec2实例。通过boto3文档,我们需要传递AlarmActions中的arn值来启动/停止/终止EC2实例。
对于root帐户,它是这样的:
AlarmActions=[
'arn:aws:swf:us-east-2:{CUSTOMER_ACCOUNT}:action/actions/AWS_EC2.InstanceId.Stop/1.0'
],
如何为子帐户执行相同操作。我尝试在AlarmActions中传递accnum变量,但它会引发语法错误。
我试过这样:
AlarmActions=[
'arn:aws:swf:us-east-2:',accnum,':action/actions/AWS_EC2.InstanceId.Stop/1.0'
],
但是抛出了语法错误:
botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the PutMetricAlarm operation: Invalid arn syntax: arn:aws:swf:us-east-2:
如何将accnum作为变量传递?或者是否有任何其他方法可以通过警报操作来停止ec2实例?或者是否有像{CUSTOMER_ACCOUNT}这样的子帐户的等价帐户用于root帐号?
答案 0 :(得分:0)
Python String and Integer concatenation
>>> print("arn:aws:swf:us-east-2:{0}:action/actions/AWS_EC2.InstanceId.Stop/1.0".format(acccnum))
arn:aws:swf:us-east-2:12312312312312:action/actions/AWS_EC2.InstanceId.Stop/1.0
>>> print("arn:aws:swf:us-east-2:" + str(acccnum) + ":action/actions/AWS_EC2.InstanceId.Stop/1.0")
arn:aws:swf:us-east-2:12312312312312:action/actions/AWS_EC2.InstanceId.Stop/1.0