Escribí una función lambda para acceder a una base de datos, por lo que el primer paso es obtener secretos de AWS Secrets Manager. Tengo una VPC privada, así como subredes, NAT Gateway y un grupo de seguridad asociado con la función lambda. También tengo secretsmanager.Secret.grantRead(lambda_exec_role) por lo que la lambda debería tener acceso a Secrets Manager.
Por alguna razón, cuando lo pruebo en API Gateway, obtuve "errno": "ETIMEDOUT" y "code": "NetworkingError" en CloudWatch. Y a partir del registro impreso que tenía en la API, se produjo un error al obtener los secretos.
También traté de agregar un punto de enlace de VPC para Secrets Manager como aquí , pero aún recibí el mismo error.
Apreciado si alguien aquí podría ayudarme con esto o dar algunos consejos.
¡Muchas gracias!
También tuve problemas con una lambda obteniendo contenido secreto.
Hay varias cosas que puedes probar:
# 1 Asegúrese de tener permiso para obtener el valor secreto, le daré el mío para una configuración de trabajo:
#2 También tuve problemas con mi VPC y subredes. Si está mal configurado, no podrá llamar a la API de Secret Manager.
Esperando que pueda ayudar a alguien algún día. :)
Así es como lo hice funcionar en serverless.yml .
Referencia de AWS: https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint
El siguiente yml aparece en la ruta resources.Resources.YourVPCEndpointNameHere :
# Provides access from the VPC to Secrets Manager # See https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint Type: AWS::EC2::VPCEndpoint Properties: VpcEndpointType: Interface ServiceName: com.amazonaws.#{AWS::Region}.secretsmanager PrivateDnsEnabled: true # Reference your VPC here VpcId: !Ref EC2VPC # Reference your subnet ids here SubnetIds: - !Ref EC2SubnetA - !Ref EC2SubnetB - !Ref EC2SubnetC # Reference your security group(s) here SecurityGroupIds: - !Ref EC2SecurityGroup Sugerencia: necesitará el complemento serverless-pseudo-parameters para que #{AWS::Region} funcione.