Tengo una función lambda que debe activarse a través de Amazon API Gateway. ¿Hay alguna forma de incluir una API ya existente (creada con la consola de AWS) en la plantilla de AWS SAM?
SAM aún no admite !ImportValue en la plantilla.
En el GitHub de aws/serverless-application-model hay un PR abierto para esa función
Si lo desea, puede ayudar y contribuir a ese PR para que pueda comenzar a usar !ImportValue en su plantilla SAM.yml
De lo contrario, le sugiero que siga el método antiguo, cree un CI/CD con una plantilla de CloudFormation que pueda usar !ImportValue y esté vinculado a un depósito de S3 donde vive su código de función lambda.
Ejemplos de plantillas de formación en la nube
SAM CLI ahora es compatible con !ImportValue, el problema en Github está cerrado.
Puedes usarlo de la siguiente manera
# You need to export the resource that you want to use in another template first # This goes at the end of your template.yml file, after the Resources # template.yml in the first repo Outputs: myExportedResource: Value: !Ref TheResource Export: Name: !Sub "{environment}-nice-export-name" # template.yml in the second repo (This obviously goes in Resources) MyLambda: Type: AWS::Serverless::Function Properties: FunctionName: awesome-lambda CodeUri: ./dist Handler: this-file.handler Role: !GetAtt LambdaRole.Arn VpcConfig: SecurityGroupIds: - !GetAtt SecurityGroup.GroupId SubnetIds: - Fn::ImportValue: !Sub "${environment}-nice-export-name"Puede usarlo exactamente como una plantilla normal de formación de nubes
Tenga en cuenta que aquí usé Fn: ImportValue porque necesitaba usar ! Sub pero si no necesita hacer referencia a un parámetro en su valor de importación, simplemente use ! ImportValue