Skip to main content

cdk-secret-manager-wrapper-layer

Project description

cdk-secret-manager-wrapper-layer

that Lambda layer uses a wrapper script to fetch information from Secrets Manager and create environmental variables.

idea from source

Example

import { App, Stack, CfnOutput, Duration } from 'aws-cdk-lib';
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
import { Function, Runtime, Code, FunctionUrlAuthType } from 'aws-cdk-lib/aws-lambda';
import { CfnSecret } from 'aws-cdk-lib/aws-secretsmanager';
import { SecretManagerWrapperLayer } from 'cdk-secret-manager-wrapper-layer';
const env = {
  region: process.env.CDK_DEFAULT_REGION,
  account: process.env.CDK_DEFAULT_ACCOUNT,
};
const app = new App();
const stack = new Stack(app, 'testing-stack', { env });

/**
 * Example create an Secret for testing.
 */
const secret = new CfnSecret(stack, 'Mysecret', {
  secretString: JSON.stringify({
    KEY1: 'VALUE1',
    KEY2: 'VALUE2',
    KEY3: 'VALUE3',
  }),
});

const layer = new SecretManagerWrapperLayer(stack, 'SecretManagerWrapperLayer');

const lambda = new Function(stack, 'fn', {
  runtime: Runtime.PYTHON_3_9,
  code: Code.fromInline(`
import os
def hander(events, contexts):
    env = {}
    env['KEY1'] = os.environ.get('KEY1', 'Not Found')
    env['KEY2'] = os.environ.get('KEY2', 'Not Found')
    env['KEY3'] = os.environ.get('KEY3', 'Not Found')
    return env
    `),
  handler: 'index.hander',
  layers: [layer],
  timeout: Duration.minutes(1),
  /**
   * you need to define this 4 environment various.
   */
  environment: {
    AWS_LAMBDA_EXEC_WRAPPER: '/opt/get-secrets-layer',
    SECRET_REGION: stack.region,
    SECRET_ARN: secret.ref,
    API_TIMEOUT: '5000',
  },
});

/**
 * Add Permission for lambda get secret value from secret manager.
 */
lambda.role!.addToPrincipalPolicy(
  new PolicyStatement({
    effect: Effect.ALLOW,
    actions: ['secretsmanager:GetSecretValue'],
    // Also you can use find from context.
    resources: [secret.ref],
  }),
);

/**
 * For Testing.
 */
const FnUrl = lambda.addFunctionUrl({
  authType: FunctionUrlAuthType.NONE,
});

new CfnOutput(stack, 'FnUrl', {
  value: FnUrl.url,
});

Testing

# ex: curl https://sdfghjklertyuioxcvbnmghj.lambda-url.us-east-1.on.aws/
curl ${FnUrl}
{"KEY2":"VALUE2","KEY1":"VALUE1","KEY3":"VALUE3"}

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cdk-secret-manager-wrapper-layer-1.0.47.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file cdk-secret-manager-wrapper-layer-1.0.47.tar.gz.

File metadata

File hashes

Hashes for cdk-secret-manager-wrapper-layer-1.0.47.tar.gz
Algorithm Hash digest
SHA256 406f09c2f7f74e2909c1ef86615682441e8ff4198f2898fd85d88f6a7104b4cf
MD5 6abe080be2c657961691b9180389a08a
BLAKE2b-256 ddb3bd24f0732331e49fe3b70c85975e3f6547fd1cc882d4a92f7809430e0c05

See more details on using hashes here.

File details

Details for the file cdk_secret_manager_wrapper_layer-1.0.47-py3-none-any.whl.

File metadata

File hashes

Hashes for cdk_secret_manager_wrapper_layer-1.0.47-py3-none-any.whl
Algorithm Hash digest
SHA256 887a96c551f590c540d854c6dfb795a7d3bf6c0e98b7a70a48c8a3b3cbae5db1
MD5 c70f182519f9efa59e12db07358cf154
BLAKE2b-256 164a8e28e9031a1da403569855e40843a413977ecd865cdf27c9952d98a33869

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page