Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
¿Cómo agrego el permiso IAM de Secrets Manager?

Estoy leyendo los documentos de CDK sobre SecretsManager y no estoy seguro de haber entendido mal, pero lo que pensé que funcionaría a partir de su ejemplo no parece otorgar el permiso que esperaba. Esencialmente, tengo una pila que contiene algunas Lambdas y me gustaría que todas pudieran leer dos secretos del SecretsManager.

 class CdkStack extends cdk.Stack { /** * * @param {cdk.Construct} scope * @param {string} id * @param {cdk.StackProps=} props */ constructor(scope, id, props) { super(scope, id, props); // eslint-disable-next-line no-new new APIServices(this, "APIServices"); const role = new iam.Role(this, "SecretsManagerRead", { assumedBy: new iam.AccountRootPrincipal(), }); const dbReadSecret = new secretsmanager.Secret(this, "databaseReader"); const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter"); dbReadSecret.grantRead(role); dbWriteSecret.grantRead(role); } }

Si lo entendí correctamente, simplemente debería crear este rol y darle permisos para acceder a los secretos. Sin embargo, mi Lambda todavía falló cuando traté de ejecutarlos. ¿Debo hacer algo más que no se menciona en los documentos que estaba leyendo sobre la asignación explícita de ese rol a las Lambdas también?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Dependiendo de su contexto real, hay dos variantes posibles.

1. Importar rol existente

Si la función de Lambda se ha predefinido (p. ej., en una pila diferente), puede agregar permisos adicionales a la función de ejecución de Lambda existente importándola primero a esta pila de CDK.

 class CdkStack extends cdk.Stack { constructor(scope, id, props) { // ... // Import the existing role into the stack const roleArn = 'arn:aws:iam::123456789012:role/MyExistingLambdaExecutionRole' const role = iam.Role.fromRoleArn(this, 'Role', roleArn, { mutable: true, }); const dbReadSecret = new secretsmanager.Secret(this, "databaseReader"); const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter"); dbReadSecret.grantRead(role); dbWriteSecret.grantRead(role); } }

Para obtener más información sobre el uso del módulo aws-iam CDK, aquí está el enlace a la documentación . Aquí puede obtener más información sobre el propio rol de ejecución de Lambda.

2. Función Lambda definida como parte de la pila

Si la función lambda se definió en algún lugar de esta pila, simplemente puede adjuntar los permisos a la función Lambda a través de su referencia usando dbReadSecret.grantRead(lambda.role) y dbWriteSecret.grantRead(lambda.role) respectivamente.

 class CdkStack extends cdk.Stack { constructor(scope, id, props) { // ... // Create the function or retrieve the reference if // it has been defined somewhere else in the stack const lambda = ... const dbReadSecret = new secretsmanager.Secret(this, "databaseReader"); const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter"); dbReadSecret.grantRead(lambda.role); dbWriteSecret.grantRead(lambda.role); } }

Por favor, eche un vistazo a la respuesta a esta pregunta como referencia.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!