[aws] vpc 内部にある lambda から SageMaker を触る

vpc 内部にある lambda の function から、SageMaker のオブジェクトを触る機会があったのですが、
設定に四苦八苦して、うまく疎通が出来なかったので方法を記載しておきます。

SageMaker 以外のサービスでもSageMakerの部分を読み替えれば同様にいけると思います。

ソースは、python でソースの書き方は、sagemaker boto3 とかで適当に検索すれば辿り着くと思います!

  1. role に permissions を追加する
    1. Configuration から、 Permissions を選択し、Role の リンクを押下(赤い部分)
      lambda の role リンク
    2. Permissions で、Add permissions で 権限を追加。すでに権限がある場合は Attach policies でもいいです。
      今回は新規に作成することにします。 Create inline policy をクリック(赤い部分)
      role の persmissions
    3. JSON タブを選択して、以下のJSONを指定します。

      Review policy を押下します。名前は適当にわかりやすい名前をつけて下さい
      permission sage maker all

      SageMaker に関する権限を大幅に付与しましたが、制限する場合は適宜ActionなりResourceなりを絞って下さい。
  2. vpc が 所属している Security groups を確認
    lambda vpc link

    赤い所を覚えておく
    そして、vpc のリンクを押下
  3. Endpoints を押下
    vpc endpoint link
  4. Create endpoint を押下
    create endpoint
  5. Service category で、 AWS services を選択
    Services から、 com.amazonaws.us-east-1.sagemaker.api を選択。
    今回は、モデル一覧の取得という処理だったのでこのサービスを選択したが、
    Notebook や、Studioをいじる場合はサービスが分かれているので適宜選択する。
    choose service
  6. vpc では、lambdaと同じvpcを選択
    vpc select

  7. 接続に使うサブネットを選択する
    choose subnet

    こちらは、labmbdaが利用しているsubnetを同様にします。

  8. セキュリティーグループを設定
    lambdaのvpcの設定で利用しているのと同じセキュリティーグループにします。
    choose security group

とりあえず、lambda から SageMaker を触るための設定です。




[firewalld] 一度の設定をミスを許してくれない時の対応

firewalld 、iptables と違って色々簡単というか簡略化されててちょっと凝った設定するならiptables の方が楽なんじゃないかと感じてますが。

ある設定をしたのちに、reload などをすると以下のエラーがでました。

よくfirewalldを理解してない時に、firewall-cmd –direct に zoneを指定したら何やってもこのエラーが出続けました。

一度、間違って設定すると頑固に何をしてもいう事を聞いてくれませんでした。

以下を修正して、間違った設定を直して

再度 reload

すれば動くでしょう。