12.5. エンドポイントオプション
AWS Secrets Manager エンドポイントは、URI 構文を使用して設定されます。
aws-secrets-manager:label
aws-secrets-manager:label
path パラメーターおよび query パラメーターを使用します。
12.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| label (producer) | 必須 論理名 | String |
12.5.2. クエリーパラメーター (19 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| binaryPayload (producer) | シークレットがバイナリーかどうかを設定します。 | false | boolean |
| operation (producer) | 必須 実行する操作。 列挙値:
| SecretsManagerOperations | |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要があるかどうかを設定します。このオプションは、uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (producer) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| profileCredentialsName (producer) | プロファイル認証情報プロバイダーを使用する場合、このパラメーターによりプロファイル名が設定されます。 | String | |
| region (producer) | Secrets Manager クライアントが動作する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 列挙値:
| String | |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useProfileCredentialsProvider (producer) | Secrets Manager クライアントがプロファイル認証情報プロバイダーを通じて認証情報をロードするかどうかを設定します。 | false | boolean |
| lazyStartProducer (producer (advanced)) | 最初のメッセージでプロデューサーをレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| secretsManagerClient (advanced) | Autowired 既存の設定済み AWS Secrets Manager クライアントを使用します。 | SecretsManagerClient | |
| proxyHost (proxy) | Secrets Manager クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (proxy) | Secrets Manager クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| proxyProtocol (proxy) | Secrets Manager クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String | |
| sessionToken (security) | ユーザーが IAM ロールを引き受ける必要がある場合に使用される Amazon AWS セッショントークン。 | String | |
| trustAllCertificates (security) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| useDefaultCredentialsProvider (security) | Translate クライアントがデフォルトの認証情報プロバイダーを通じて認証情報をロードするか、または Translate クライアントに静的な認証情報が渡されるかを設定します。 | false | boolean |
| useSessionCredentials (security) | Secrets Manager クライアントがセッション認証情報を使用するか設定します。これは、ユーザーが Secrets Manager で操作を実行するために IAM ロールを引き受ける必要がある場合に便利です。 | false | boolean |
12.5.3. 静的認証情報、デフォルト認証情報プロバイダー、プロファイル認証情報プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、それを true に設定することで、明示的な静的認証情報の使用を回避できます。
デフォルト認証情報プロバイダーの評価順序は次のとおりです。
-
Java system properties -
aws.accessKeyIdandaws.secretKey -
環境変数:
AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY。 - AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
-
Amazon ECS コンテナー認証情報 - 環境変数
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIが設定されている場合は、Amazon ECS からロードされます。 - Amazon EC2 インスタンスプロファイルの認証情報。
useProfileCredentialsProvider オプションを true に指定し、profileCredentialsName をプロファイル名に指定することで、プロファイル認証情報プロバイダーを使用できます。
同時に使用できるのは、静的、デフォルト、およびプロファイルの認証情報のうち 1 つだけです。詳細は、AWS credentials のドキュメント を参照してください。
12.5.4. AWS Secrets Manager プロパティー関数の使用 リンクのコピーリンクがクリップボードにコピーされました!
この機能を使用するには、環境変数として AWS Secrets Manager Service に認証情報を提供する必要があります。
export CAMEL_VAULT_AWS_ACCESS_KEY=accessKey export CAMEL_VAULT_AWS_SECRET_KEY=secretKey export CAMEL_VAULT_AWS_REGION=region
export CAMEL_VAULT_AWS_ACCESS_KEY=accessKey
export CAMEL_VAULT_AWS_SECRET_KEY=secretKey
export CAMEL_VAULT_AWS_REGION=region
次のように、application.properties ファイルで認証情報を設定することもできます。
camel.vault.aws.accessKey = accessKey camel.vault.aws.secretKey = secretKey camel.vault.aws.region = region
camel.vault.aws.accessKey = accessKey
camel.vault.aws.secretKey = secretKey
camel.vault.aws.region = region
代わりに AWS のデフォルト認証情報プロバイダー を使用する場合は、次の環境変数を指定する必要があります。
export CAMEL_VAULT_AWS_USE_DEFAULT_CREDENTIALS_PROVIDER=true export CAMEL_VAULT_AWS_REGION=region
export CAMEL_VAULT_AWS_USE_DEFAULT_CREDENTIALS_PROVIDER=true
export CAMEL_VAULT_AWS_REGION=region
次のように、application.properties ファイルで認証情報を設定することもできます。
camel.vault.aws.defaultCredentialsProvider = true camel.vault.aws.region = region
camel.vault.aws.defaultCredentialsProvider = true
camel.vault.aws.region = region
次のように、AWS Secrets Manager にアクセスするための特定のプロファイル名を指定することもできます。
export CAMEL_VAULT_AWS_USE_PROFILE_CREDENTIALS_PROVIDER=true export CAMEL_VAULT_AWS_PROFILE_NAME=test-account export CAMEL_VAULT_AWS_REGION=region
export CAMEL_VAULT_AWS_USE_PROFILE_CREDENTIALS_PROVIDER=true
export CAMEL_VAULT_AWS_PROFILE_NAME=test-account
export CAMEL_VAULT_AWS_REGION=region
次のように、application.properties ファイルで認証情報を設定することもできます。
camel.vault.aws.profileCredentialsProvider = true camel.vault.aws.profileName = test-account camel.vault.aws.region = region
camel.vault.aws.profileCredentialsProvider = true
camel.vault.aws.profileName = test-account
camel.vault.aws.region = region
camel.vault.aws 設定は、AWS Secrets Manager プロパティー関数 (たとえば、プロパティーを解決する場合) にのみ適用されます。シークレットの作成、取得、リスト表示などの operation オプションを使用する場合は、AWS サービスに接続するための通常のオプションを指定します。
この時点で、次の方法でプロパティーを参照できます。
この場合の route は、AWS Secrets Manager Service に保存されているシークレットの名前になります。
AWS Secret Manager にシークレットが存在しない場合は、デフォルト値を指定できます。
この場合、シークレットが存在しなければプロパティーの値は "default" にフォールバックします。
また、たとえば次の形式の database という名前のシークレットがある場合、シークレットの特定のフィールドを取得できます。
次のように、ルート内で 1 つのシークレット値を取得できます。
または、エンドポイントの一部としてプロパティーを再利用します。
AWS Secret Manager に特定のシークレットフィールドが存在しない場合は、デフォルト値を指定できます。
この場合、シークレットが存在しないか、シークレットは存在するが username フィールドがシークレットの一部ではない場合、プロパティーは値として "admin" にフォールバックします。
フィールド/デフォルト値を指定して、またはシークレットのみを使用して、両方のアプローチでシークレットの特定のバージョンを取得するための構文もあります。
このアプローチでは、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' の RAW ルートシークレットが返されます。
このアプローチでは、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' のルートシークレット値が返されます。シークレットが存在しない場合、またはバージョンが存在しない場合は、デフォルト値が返されます。
この方法では、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' のデータベースシークレットの username フィールドが返されます。シークレットが存在しない場合、またはバージョンが存在しない場合は、admin が返されます。
唯一の要件は、camel-aws-secrets-manager jar を Camel アプリケーションに追加することです。
12.5.5. Secret Refresh での Camel コンテキストの自動リロード リンクのコピーリンクがクリップボードにコピーされました!
シークレットの更新時に Camel コンテキストをリロードできるようにするには、通常の認証情報 (AWS Secret Manager Property 関数で使用されるものと同じ) を指定します。
環境変数を使用する場合:
export CAMEL_VAULT_AWS_USE_DEFAULT_CREDENTIALS_PROVIDER=accessKey export CAMEL_VAULT_AWS_REGION=region
export CAMEL_VAULT_AWS_USE_DEFAULT_CREDENTIALS_PROVIDER=accessKey
export CAMEL_VAULT_AWS_REGION=region
または単純な Camel のメインプロパティーとしての場合:
camel.vault.aws.useDefaultCredentialProvider = true camel.vault.aws.region = region
camel.vault.aws.useDefaultCredentialProvider = true
camel.vault.aws.region = region
または、デフォルトの認証情報プロバイダーチェーンを使用する代わりに、accessKey/SecretKey とリージョンを指定します。
自動更新を有効にするには、追加のプロパティーを次のように設定します。
camel.vault.aws.refreshEnabled=true camel.vault.aws.refreshPeriod=60000 camel.vault.aws.secrets=Secret camel.main.context-reload-enabled = true
camel.vault.aws.refreshEnabled=true
camel.vault.aws.refreshPeriod=60000
camel.vault.aws.secrets=Secret
camel.main.context-reload-enabled = true
ここで、camel.vault.aws.refreshEnabled は、自動コンテキストリロードを有効にし、camel.vault.aws.refreshPeriod は更新イベントの 2 つの異なるチェック間の時間間隔であり、camel.vault.aws.secrets は更新を追跡するシークレットを表す正規表現です。
camel.vault.aws.secrets は必須ではないことに注意してください。指定されていない場合は、更新イベントのチェックを担当するタスクが、指定されていないこと、または aws: 接頭辞を持つプロパティーを考慮します。
12.5.6. Eventbridge および AWS SQS サービスを使用した Secret Refresh での Camel コンテキストの自動リロード リンクのコピーリンクがクリップボードにコピーされました!
もう 1 つのオプションは、AWS EventBridge を AWS SQS サービスと組み合わせて使用することです。
AWS 側では、次のリソースを作成する必要があります。
- AWS Couldtrail トレイル
- AWS SQS キュー
- 次のような Eventbridge ルール
このルールにより、AWS Secrets Manager に関連するイベントがフィルタリングされます
- Eventbridge ルールの AWS SQS キューにルールターゲットを設定する必要があります。
- 上記の SQS キューに書き込むには、Eventbrige ルールに権限を与える必要があります。これを行うには、次のような json ファイルを定義する必要があります。
{
"Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"<queue_arn>/SQSDefaultPolicy\",\"Statement\":[{\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"<queue_arn>\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"<eventbridge_rule_arn>\"}}}]}"
}
{
"Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"<queue_arn>/SQSDefaultPolicy\",\"Statement\":[{\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"<queue_arn>\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"<eventbridge_rule_arn>\"}}}]}"
}
queue_arn と eventbridge_rule_arn の値を変更し、policy.json という名前でファイルを保存し、AWS CLI で次のコマンドを実行します。
aws sqs set-queue-attributes --queue-url <queue_url> --attributes file://policy.json
aws sqs set-queue-attributes --queue-url <queue_url> --attributes file://policy.json
この場合の queue_url は、先ほど作成されたキューの AWS SQS キュー URL です。
これで、Camel 側で設定をセットアップできるはずです。SQS 通知を有効にするには、次のプロパティーを追加します。
この場合の queue_url は、先ほど作成されたキューの AWS SQS キュー URL です。
Secret という名前のシークレットの PutSecretValue イベントが発生するたびに、メッセージが AWS SQS キューにエンキューされ、Camel 側で消費され、コンテキストのリロードがトリガーされます。