

# AWS Glue Studio での Snapchat 広告への接続
<a name="connecting-to-data-snapchat-ads"></a>

 Snapchat は、元々 Snapchat Inc. であった Snap Inc. が開発したマルチメディアインスタントメッセージングアプリおよびサービスです。Snapchat の主な特長の 1 つは、写真やメッセージが通常は短い時間しか利用できず、受信者がその後アクセスできなくなるということです。Snapchat Marketing は、企業が料金を払うことで Snapchat ユーザーに出すことができる投稿です。

**Topics**
+ [AWS Glue の Snapchat 広告サポート](snapchat-ads-support.md)
+ [接続を作成および使用するための API オペレーションを含むポリシー](snapchat-ads-configuring-iam-permissions.md)
+ [Snapchat 広告の設定](snapchat-ads-configuring.md)
+ [Snapchat 広告接続の設定](snapchat-ads-configuring-connections.md)
+ [Snapchat 広告エンティティからの読み取り](snapchat-ads-reading-from-entities.md)
+ [Snapchat 広告の接続オプション](snapchat-ads-connection-options.md)
+ [Snapchat 広告アカウントの作成とクライアントアプリの設定](connecting-to-data-snapchat-ads-new-account.md)
+ [Snapchat 広告アカウントでのアプリの作成](connecting-to-data-snapchat-ads-managed-client-application.md)

# AWS Glue の Snapchat 広告サポート
<a name="snapchat-ads-support"></a>

AWS Glue は、次のように Snapchat 広告をサポートします:

**ソースとしてサポートされていますか?**  
はい。AWS Glue ETL ジョブを使用して、Snapchat 広告からデータをクエリできます。

**ターゲットとしてサポートされていますか?**  
いいえ。

**サポートされている Snapchat 広告 API のバージョン**  
 v1。

# 接続を作成および使用するための API オペレーションを含むポリシー
<a name="snapchat-ads-configuring-iam-permissions"></a>

 次のサンプル ポリシーで、接続の作成と使用に必要な AWS の権限について説明します。新しいロールを作成する場合は、以下を含むポリシーを作成します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

また、次のマネージド IAM ポリシーを使用して、アクセスを許可できます。
+  [ AWSGlueServiceRole ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – さまざまな AWS Glue プロセスを実行するために必要なリソースへのアクセス権をユーザーに代わって付与します。これらのリソースには、AWS Glue、Amazon S3、IAM、Amazon CloudWatch Logs および Amazon EC2 が含まれます。このポリシーで指定されたリソースの命名規則に従った場合、AWS Glue プロセスは必要なアクセス許可を使用できます。このポリシーは、通常、クローラー、ジョブ、開発エンドポイントを定義するときに指定されたロールにアタッチされます。
+  [ AWSGlueConsoleFullAccess ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) — ポリシーがアタッチされているアイデンティティが AWS マネージメントコンソールを使用するときは、AWS Glue リソースへのフルアクセスを許可します。このポリシーで指定されたリソースの命名規則に従った場合、ユーザーは完全なコンソール機能を使用できます。このポリシーは、通常 AWS Glue コンソールのユーザーにアタッチされています。

# Snapchat 広告の設定
<a name="snapchat-ads-configuring"></a>

AWS Glue を使用して Snapchat 広告からデータを転送できるようにするには、次の要件を満たす必要があります:

## 最小要件
<a name="snapchat-ads-configuring-min-requirements"></a>
+  Snapchat 広告アカウントを持っている。アカウントの作成の詳細については、「[Snapchat 広告アカウントの作成とクライアントアプリの設定](connecting-to-data-snapchat-ads-new-account.md)」を参照してください。
+  Snapchat 広告アカウントに OAuth2 アプリを作成しました。この統合により、AWS Glue がお客様のアカウントに対して認証呼び出しを行うときに、お客様のデータに安全にアクセスするために使用する認証情報が提供されます。詳細については、「[Snapchat 広告アカウントでのアプリの作成](connecting-to-data-snapchat-ads-managed-client-application.md)」を参照してください。

 これらの要件を満たすと、Snapchat 広告アカウントに AWS Glue を接続する準備が整います。Snapchat 広告では、接続されたアプリは、AWS Glue などの外部アプリが Snapchat 広告データにアクセスすることを許可するフレームワークです。

# Snapchat 広告接続の設定
<a name="snapchat-ads-configuring-connections"></a>

 Snapchat 広告は、`AUTHORIZATION_CODE` グラントタイプのみをサポートします。

 このグラントタイプは、ユーザーを認証するためにサードパーティーの認証サーバーにユーザーをリダイレクトすることから、「three-legged」の OAuth と見なされます。AWS Glue コンソール経由で接続を作成するときに使用されます。接続を作成するユーザーは、デフォルトで AWS Glue 所有の接続アプリ (AWS Glue マネージドクライアントアプリケーション) に依存する場合があります。この場合、Snapchat 広告のインスタンス URL 以外の OAuth 関連情報を提供する必要はありません。AWS Glue コンソールでは、ユーザーが Snapchat 広告にリダイレクトされます。ここではユーザーがログインし、Snapchat 広告インスタンスにアクセスするためのリクエストされた権限を AWS Glue に許可する必要があります。

 ユーザーは、Snapchat 広告で独自の接続アプリを作成し、AWS Glue コンソールを介して接続を作成するときに独自のクライアント ID とクライアントシークレットを指定することを選択できます。このシナリオでは、引き続き Snapchat 広告にリダイレクトされてログインし、リソースにアクセスするために AWS Glue を承認します。

 このグラントタイプは、更新トークンとアクセストークンになります。このアクセストークンは、作成から 1 時間後に期限切れになります。新しいアクセストークンは、更新トークンを使用してフェッチできます。

 OAuth 認証コードフローでの接続されたアプリケーションの作成の詳細については、「[Ads API](https://marketingapi.snapchat.com/docs/#authentication)」を参照してください。

Snapchat 広告の接続を設定するには:

1.  AWS Secrets Manager で、次の詳細を含むシークレットを作成します。AWS Glue で接続ごとにシークレットを作成する必要があります。

   1.  カスタマーマネージド接続アプリケーションの場合 – シークレットには、`USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` を使用して接続されたアプリケーションのコンシューマーシークレットをキーとして含める必要があります。

1. AWS Glue Glue Studio で、以下の手順に従って **[データ接続]** の下に接続を作成します。

   1. **[接続タイプ]** を選択する際に、[Snapchat 広告] を選択します。

   1. Snapchat 広告の環境を指定します。

   1.  AWS Glue が次のアクションを担い、その権限を持つことができる IAM ロールを選択します。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  AWS Glue でこの接続に使用する `secretName` を選択して、トークンを配置します。

   1.  ネットワークを使用する場合は、ネットワークオプションを選択します。

1.  AWS Glue ジョブに関連付けられている IAM ロールに `secretName` を読み取るアクセス許可を付与します。

# Snapchat 広告エンティティからの読み取り
<a name="snapchat-ads-reading-from-entities"></a>

 **前提条件** 
+  読み取り元の Snapchat 広告のオブジェクト。使用可能なエンティティを確認するには、以下のサポートされているエンティティの表を参照してください。

 **サポートされているエンティティ** 


| エンティティ | フィルタリング可能 | 制限をサポートする | Order By をサポートする | Select \$1 をサポートする | パーティション分割をサポートする | 
| --- | --- | --- | --- | --- | --- | 
| 組織 | なし | なし | なし | あり | なし | 
| Ad Account | なし | なし | なし | あり | なし | 
| Creative | なし | なし | なし | あり | なし | 
| メディア | なし | なし | なし | あり | なし | 
| キャンペーン | あり | なし | なし | あり | なし | 
| Ad Under Ad Account | あり | なし | なし | あり | なし | 
| Ad Under Campaign | なし | なし | なし | あり | なし | 
| Ad Squad | あり | なし | なし | あり | なし | 
| Segment | なし | なし | なし | あり | なし | 

 **例** 

```
snapchatads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="snapchatAds",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v1"
    }
)
```

 **Snapchat 広告エンティティとフィールドの詳細** 

 Snapchat 広告は、選択したエンティティで使用可能なフィールドを動的にロードします。フィールドのデータ型に応じて、次のフィルター演算子がサポートされます。


| フィールドデータタイプ | サポートされているフィルター演算子 | 
| --- | --- | 
| ブール値 | = | 

 **パーティショニングクエリ** 
+  フィールドベースのパーティショニング: サポートされていません。
+  レコードベースのパーティショニング: サポートされていません。

# Snapchat 広告の接続オプション
<a name="snapchat-ads-connection-options"></a>

Snapchat 広告の接続オプションは次のとおりです:
+  `ENTITY_NAME` (文字列) – (必須) 読み取りに使用されます。Snapchat 広告エンティティの名前。例えば、` campaign ` などです。
+  `API_VERSION` (文字列) – (必須) 読み取りに使用されます。使用する Snapchat 広告の Rest API バージョン。Snapchat 広告は現在バージョン v1 のみをサポートしているため、この値は v1 になります。
+  `SELECTED_FIELDS`(List<String>) – Default: empty(SELECT \$1). 読み込みに使用されます。選択したエンティティに対して選択する列のカンマ区切りリスト。
+  `FILTER_PREDICATE`(文字列) – デフォルト: 空 読み込みに使用されます。Spark SQL 形式である必要があります。
+  `QUERY`(文字列) - デフォルト: 空 読み込みに使用されます。完全な Spark SQL クエリです。

# Snapchat 広告アカウントの作成とクライアントアプリの設定
<a name="connecting-to-data-snapchat-ads-new-account"></a>

**Topics**
+ [Snapchat 広告にサインアップする](#snapchat-ads-sign-up)
+ [Snapchat 広告アカウントを作成する手順](#snapchat-ads-create-ad-account)

## Snapchat 広告にサインアップする
<a name="snapchat-ads-sign-up"></a>

**Snapchat 広告にサインアップするには:**

1.  [Snapchat 広告マネージャ](https://ads.snapchat.com/)に移動します。**[New to Snapchat?]** の横にある **[Sign up]** を選択します。

1.  **[アカウントを作成]** 画面で、プロンプトに従ってビジネス名、E メール、パスワードなどを入力します。[**次へ**] を選択します。

1.  **[プロフィールを作成]** 画面で、ユーザー名、ウェブサイト (省略可) を入力し、**[アカウントを作成]** を選択します。これにより、**[Edit Your Profile]** 画面にプロフィール写真と自己紹介を追加するオプションが表示されます。**[確認]** を選択します。

1.  **[ビジネス情報]** 画面で、国、通貨、電話番号、GSTIN などの必須フィールドを入力し、**[次へ]** を選択してアカウント作成プロセスを完了します。

## Snapchat 広告アカウントを作成する手順
<a name="snapchat-ads-create-ad-account"></a>

**Snapchat 広告アカウントを作成するには:**

1.  **[広告マネージャ]** にログインします。次に、上部隅にあるナビゲーションをクリックし、**[Ad Accounts]** を選択します。

1.  **[\$1 New Ad Account]** を選択します。広告主の詳細を入力します: 
   +  広告主の代わりに広告を購入する代理業者であるかどうかを選択します。「Yes」を選択すると、年齢、性別、郵便番号レベルのターゲティングなどのターゲティングパラメータを使用する場合、広告が拒否される可能性があります。最低年齢のターゲティングは、最大 21 歳まで適用できます。
   +  広告アカウントが住宅、クレジット、雇用広告を実行するかどうかを選択します。「Yes」を選択すると、年齢、性別、郵便番号レベルのターゲティングなどのターゲティングパラメータを使用する場合、広告が拒否される可能性があります。最低年齢のターゲティングは、最大 21 歳まで適用できます。
   +  政治広告に広告アカウントを使用するかどうかを選択します。政治広告を運営している場合は、広告の支払いを行っているスポンサーの政治組織または支持団体を入力します。政治組織を正確に入力しないと、広告が拒否される可能性があります。また、広告を送信する前に、リンクされた必須の「Political Ad Review Form」を入力する必要があります。

1.  **[Account Details]** を選択し、広告アカウント情報を入力します:     
<a name="snapchat-ads-account-details"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/connecting-to-data-snapchat-ads-new-account.html)

1.  **[アカウントの作成]** を選択します。広告アカウントが作成され、広告マネージャの広告アカウント部分に表示されます。広告の掲載を開始するには、支払い方法を入力します。広告アカウントにメンバーを追加することもできます。

1.  既存の支払い方法を使用するか、新しい支払い方法を作成するかを選択します。次に、**[Save Payment Method]** を選択します。

1.  ビジネスに[招待したメンバー](https://businesshelp.snapchat.com/s/article/manage-members?language=en_US)を選択して、広告アカウントに追加します。割り当てることができるロールとアクセス許可の詳細については、「[Roles and Permissions Overview](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US)」を参照してください。追加したメンバーは、広告マネージャにログインしてこの広告アカウントにアクセスできます。完了したら、メンバーを保存します。

 広告アカウントの詳細については、[https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US](https://businesshelp.snapchat.com/s/article/roles-permissions?language=en_US)https://businesshelp.snapchat.com/s/article/roles-permissions?language=en\$1US を参照してください。

# Snapchat 広告アカウントでのアプリの作成
<a name="connecting-to-data-snapchat-ads-managed-client-application"></a>

 Snapchat の Marketing API へのアクセスを有効にするには、ビジネスアカウントが設定されていることを確認してください。次に、下記のステップを実行します。

1.  広告マネージャにログインします。次に、左上隅のメニューを選択し、**[Business Dashboard]** を選択し、**[Business Details]** を選択します。

1.  **[\$1OAuth アプリ]** を選択します。

1.  アプリ名を入力し、次の URL を Snap Redirect URI `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth` として追加します。例えば、us-west-1 リージョンを使用する場合、URL は `https://us-west-1.console.aws.amazon.com/gluestudio/oauth) and choose Create OAuth App` になります。**[Create OAuth App]** を選択します。

1.  アプリの認証情報 (クライアント ID とクライアントシークレット) が表示されます。認証情報を保存します。これは接続を作成する際に必要になります。