Обходя по кругу и вырывая себе волосы на этом, любые указатели очень ценятся.
У меня есть стек CloudFormation, который создает экземпляр EC2. Я вывожу его идентификатор следующим образом:
Outputs:
DevBoxInstanceId:
Description: The instance ID of the EC2 Dev_Box.
Value: !Ref TestInstance
Export:
Name: DevBoxId
Теперь в консоли я вижу, что это выдает идентификатор так, как мне бы хотелось. Моя проблема в том, что я не могу понять, как ссылаться на это во втором стеке. Я не использовал Fn :: ImportValues, но по понятным причинам я бы хотел. Мой второй стек создает лямбда-функцию, которая останавливает экземпляр. Я хочу сослаться на DevBoxId внутри функции - я что-то не так понял здесь? Я пробовал несколько вариантов следующего:
LambdaFunctionStop:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.7
Timeout: 30
Code:
ZipFile: |
import boto3
region = 'eu-west-2'
instances = ['!ImportValue DevBoxId']
ec2 = boto3.client('ec2', region_name=region)
def handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
Description: Automatically stop Dev_Env instances based on specified schedule.
Handler: index.handler
Role: !GetAtt 'IAMRole.Arn'
Соответствующая часть, по которой я обращаюсь за помощью:
instances = ['!ImportValue DevBoxId']
Как мне написать это правильно?