AWS S3 で IAM role を考慮して credentialProvider するサンプルコード [AWS SDK for JavaScript]

AWS S3 で IAM role を考慮して credentialProvider を利用するサンプルコードをご紹介します。

サンプルコードは aws-sdk npm を利用して TypeScript で書いてます。

AWS

AWS S3 で credentialProvider するサンプルコード

import * as AWS from 'aws-sdk';

private createClient() {
  const config: AWS.S3.Types.ClientConfiguration = {
    endpoint: new AWS.Endpoint(process.env.AWS_S3_ENDPOINT),
    credentialProvider: new AWS.CredentialProviderChain(),
    sslEnabled: true,
    signatureVersion: 'v4',
  };

  return new AWS.S3(config);
}

AWS S3 で credentialProvider するサンプルコード (minio も考慮)

import * as AWS from 'aws-sdk';

private createClient() {
  const config: AWS.S3.Types.ClientConfiguration = {
    endpoint: new AWS.Endpoint(process.env.AWS_S3_ENDPOINT),
    s3ForcePathStyle: true,
    sslEnabled: true,
    signatureVersion: 'v4',
  };

  if (
    process.env.NODE_ENV === 'development' ||
    process.env.NODE_ENV === 'test'
  ) {
    // NOTE: minio のために @deprecated な property も設定
    config.accessKeyId = process.env.AWS_S3_ACCESS_KEY_ID;
    config.secretAccessKey = process.env.AWS_S3_SECRET_ACCESS_KEY;
  } else {
    config.credentialProvider = new AWS.CredentialProviderChain();
  }

  return new AWS.S3(config);
}

以上、AWS S3 で IAM role を考慮して credentialProvider を利用した、現場からお送りしました。

参考情報