vpc 内部にある lambda の function から、SageMaker のオブジェクトを触る機会があったのですが、
設定に四苦八苦して、うまく疎通が出来なかったので方法を記載しておきます。
SageMaker 以外のサービスでもSageMakerの部分を読み替えれば同様にいけると思います。
ソースは、python でソースの書き方は、sagemaker boto3 とかで適当に検索すれば辿り着くと思います!
- role に permissions を追加する
- Configuration から、 Permissions を選択し、Role の リンクを押下(赤い部分)
- Permissions で、Add permissions で 権限を追加。すでに権限がある場合は Attach policies でもいいです。
今回は新規に作成することにします。 Create inline policy をクリック(赤い部分)
- JSON タブを選択して、以下のJSONを指定します。
12345678910111213{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "sagemaker:*","Resource": "*"}]}
Review policy を押下します。名前は適当にわかりやすい名前をつけて下さい
SageMaker に関する権限を大幅に付与しましたが、制限する場合は適宜ActionなりResourceなりを絞って下さい。
- Configuration から、 Permissions を選択し、Role の リンクを押下(赤い部分)
- vpc が 所属している Security groups を確認
赤い所を覚えておく
そして、vpc のリンクを押下 - Endpoints を押下
- Create endpoint を押下
- Service category で、 AWS services を選択
Services から、 com.amazonaws.us-east-1.sagemaker.api を選択。
今回は、モデル一覧の取得という処理だったのでこのサービスを選択したが、
Notebook や、Studioをいじる場合はサービスが分かれているので適宜選択する。
- vpc では、lambdaと同じvpcを選択
- 接続に使うサブネットを選択する
こちらは、labmbdaが利用しているsubnetを同様にします。
- セキュリティーグループを設定
lambdaのvpcの設定で利用しているのと同じセキュリティーグループにします。
とりあえず、lambda から SageMaker を触るための設定です。