1
0

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.

指定ログイン情報(Named Credentials)を使用してSalesforce ApexからAWS APIをコールする

Last updated at Posted at 2023-07-12

概要

従来から指定ログイン情報(Named Credentials)という仕組みはありましたが、設定方法が変更になっています。
シンプルな例で、AWS APIをコールアウトする設定をし、動作を試してみます。

試す内容

新しい指定ログイン情報を設定し、開発者コンソールから匿名ApexでS3バケットリストAPIをコール、レスポンスを確認してみます。
検証環境は DeveloperEdition組織 Summer '23 です。

設定手順

IAMユーザーを作成(AWS側)

AWSアカウント内へIAMユーザーを作成します。
許可オプションは「ポリシーを直接アタッチ」を選択、ポリシーは 「AmazonS3ReadOnlyAccess」をアタッチしました。
ユーザー作成後、アクセスキーを作成、アクセスキーとシークレットアクセスキーを控えておきます。
image.png

外部ログイン情報を作成

設定から[指定ログイン情報] ページへアクセス、[外部ログイン情報] タブをクリックし、[新規] ボタンをクリックします。
image.png

表示ラベルと名前へ 「S3Access」と指定し、認証プロトコルへ 「AWS署名バージョン4」を選択します。
サービスへ 「s3」、地域へ「us-east-1」を入力し、保存します。
image.png

続いてプリンシパルセクションの[新規]ボタンをクリックします。
image.png

パラメータ名へ「S3ControlUser」を入力、アクセスキーとアクセスの秘密へそれぞれIAMユーザーのアクセスキー、シークレットアクセスキーを入力し、保存します。
image.png

指定ログイン情報を作成

設定から[指定ログイン情報] ページへアクセス、[指定ログイン情報] タブの[新規] ボタンをクリックします。
表示ラベル、名前へ 「S3Access」、URLへ 「https://s3.amazonaws.com 」を入力します。
外部ログイン情報へは上記で設定した「S3Access」を選択します。
その他の項目はデフォルトのまま、保存します。
image.png

外部ログインプリンシパルのアクセス許可

実行するセールスフォースユーザへ外部ログインプリンシパルのアクセス許可設定を行います。
下記設定の新規権限セット S3AccessPermset を作成し、対象ユーザへ割り当てます。

外部ログイン情報プリンシパルアクセス

上記で設定した外部ログイン情報+プリンシパルの設定が表示されますので選択して追加、保存します。

image.png

ユーザの外部ログイン情報オブジェクト権限

すべて許可設定します。
(設定時にシステム管理者権限等、「すべてのデータの編集」が有効になっている場合は不要ですが、一般的な利用ユーザの場合は必要です)

image.png

動作確認

デベロッパーコンソールの Anonymous WindowからApexコードを実行して確認します。
(従来の指定ログイン情報と記述は同じで良さそうです)

HttpRequest req = new HttpRequest();
req.setEndpoint('callout:S3Access/');
req.setMethod('GET');

Http http = new Http();
HttpResponse res = http.send(req);
System.debug(res.getBody());

ログを確認すると(長いXMLなので途中で切れますが)レスポンスを確認できます。
また、デバッグログでNamedCalloutが実行されて、Statusコードが200であることなども確認可能です。

image.png

感想

従来の指定ログイン情報(NamdeCredentials)設定に比べると設定項目が分離し、権限も含めて各要素を関連付ける仕組みとなっています。シンプルに設定箇所が多く、関連を把握するのが面倒な印象を受けました。
ただ、権限をより明確に割り当てられるのと、AWSコールアウトについてはAssumeRoleできるようなので機能としてはパワーアップしていますし、柔軟で細かい設定が可能になっていると思います。

現時点では、従来機能での設定も引き続き利用可能、新たに設定することもできますが、非推奨となっているため、移行を検討する必要がありますね。

その他補足

従来の設定は、設定画面上 「種別:旧」 と表示、区別されています。
image.png

リンク

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?