1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS デフォルトVPC内のサブネットに設置したlambdaからSecrets ManagerのAPIキーを取得する方法

Last updated at Posted at 2023-06-02

概要

  • デフォルトVPC内のサブネットに設置したlambdaからSecrete ManagerのAPIキーを取得する方法をまとめる。

前提

  • 下記の内容が完了していること。

方法

lambdaの作成

  1. 任意のランタイムでlambda関数を作成する。(筆者はNode.js18で作成する)

  2. 下記の内容をindex.mjsに記載する。

    // Use this code snippet in your app.
    // If you need more information about configurations or implementing the sample code, visit the AWS docs:
    // https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html
    
    import {
      SecretsManagerClient,
      GetSecretValueCommand,
    } from "@aws-sdk/client-secrets-manager";
    
    const secret_name = "API-KEY";
    
    const client = new SecretsManagerClient({
      region: "ap-northeast-1",
    });
    
    let response;
    
    try {
      response = await client.send(
        new GetSecretValueCommand({
          SecretId: secret_name,
          VersionStage: "AWSCURRENT", // VersionStage defaults to AWSCURRENT if unspecified
        })
      );
    } catch (error) {
      // For a list of exceptions thrown, see
      // https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
      throw error;
    }
    
    const secret = response.SecretString;
    console.log(secret);
    
    // Your code goes here
    
    export const handler = async(event) => {
        // TODO implement
        const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
        };
        return response;
    };
    
  3. 「レイヤーの追加」から「AWSレイヤー」で「AWS-Parameters-and-Secrets-Lambda-Extension」を選択し、設定する。(記事記載時のレイヤーバージョンは4)

  4. 「設定」から「アクセス権限」を開き、lambdaに紐づいているロールの詳細を開く。

  5. 「許可を追加」から「ポリシーをアタッチ」を開き「SecretsManagerReadWrite」を付与する。

  6. 「許可を追加」から「ポリシーをアタッチ」を開き「AWSLambdaVPCAccessExecutionRole」を付与する。

  7. 一旦この状態でlambdaのHello worldテストを定義後、実行し、下記のように問題なくシークレットマネージャーの値を取得できていることを確認する。

    secret-manager-get-test_-_Lambda.png

VPC系情報をlambdaに記載

  1. 「設定」から「VPC」を開き「編集」をクリックする。

  2. 下記のように設定する。

    • VPC:デフォルトVPCを選択
    • サブネット:デフォルトサブネットのnp-northeast-1aのサブネットを選択
    • セキュリティグループ:AWS VPCエンドポイントを作成するで作成したセキュリティグループを設定する。

    VPC_の編集__secret-manager-get-test__-_Lambda.png

  3. Hello worldテストを実行し、下記のように問題なくSecrets Managerの値を取得できていることを確認する。

    ![secret-manager-get-test_-_Lambda.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d6352b0a-6559-1cd0-ced2-f1c2f4f65057.png

  4. ちなみにAWS VPCエンドポイントを作成するを実施せず(VPCエンドポイントを作成せず)にデフォルトのセキュリティグループを設定するとSecrets ManagerからのレスポンスがセキュリティグループのインバウンドルールでHTTPSが許可されていないためタイムアウトとなる。

参考文献

https://confrage.jp/vpc-lambda%E3%81%8B%E3%82%89vpc%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E7%B5%8C%E7%94%B1%E3%81%A7secrets-manager%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?