AWS Lambdaで、アクセスキーとシークレットアクセスキーを環境変数から参照する方法です。
検証環境
Java 8
AWS Lambdaで実行する場合
AWS Lambdaにおいて、アクセスキーとシークレットアクセスキーの環境変数のキーは予約されています。 docs.aws.amazon.com
- AWS Toolkitの設定画面で、アクセスキーとシークレットアクセスキーを設定しておきます。
- 書いたコードをAWS Lambdaにアップロードすると、環境変数に値が設定されます。
検証コード
package net.jhashimoto.aws.lambda; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class LambdaFunctionHandler implements RequestHandler<String, Integer> { @Override public Integer handleRequest(String input, Context context) { // 環境変数から認証情報を取得 AWSCredentials credentials = new EnvironmentVariableCredentialsProvider().getCredentials(); return 0; } }
JUnitで実行する場合
JUnitの場合は、System Rules
で環境変数を設定します。環境変数の値は、テストメソッドの実行が終了すると消去されます。
検証コード
package net.jhashimoto.aws.lambda; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.contrib.java.lang.system.EnvironmentVariables; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; public class CredentialsTest { @Rule public final EnvironmentVariables environmentVariables = new EnvironmentVariables(); @Test public void testCredentials() { environmentVariables.set("AWS_ACCESS_KEY_ID", "XXXXXXXXXXXXXXXXXXXX"); environmentVariables.set("AWS_SECRET_ACCESS_KEY", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); // 環境変数から認証情報を取得 AWSCredentials credentials = new EnvironmentVariableCredentialsProvider().getCredentials(); Assert.assertEquals("XXXXXXXXXXXXXXXXXXXX", credentials.getAWSAccessKeyId()); Assert.assertEquals("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", credentials.getAWSSecretKey()); } }