Amazon AppFlow の送信元コネクタで Microsoft SharePoint Online が選択出来るようになりました

2022.12.22

いわさです。

先日の re:Invent 2022 で Amazon AppFlow に多くのコネクタが追加されました。

その時に実は追加されていたのか、そのあとこっそり登場したのかわからないのですが、Microsoft SharPoint Online を送信元に構成するためのコネクターも追加されていました。
アップデートニュースは以下です。

本日は Office 365 E3 を持っていたので SharePoint Online と AppFlow を使って接続しフローを実行してみました。

接続構成に必要な Azure AD アプリケーションを作成

まず、AppFlow コネクタを使って AWS から SharePoint Online のリソースへアクセスするのですが、対象の SharePoint Online の Azure AD テナントへアプリケーションを登録し、そのクライアント ID やシークレットを使って Microsoft Graph API を使って外部リソースへアクセスを行います。

そのため、まずは SharePoint Online 側での設定が必要です。
対象の SharePoint Online テナントとアクセスしている Azure ポータルのテナントが同じものかまず確認してください。

確認出来たら、Azure Active Directory サービスからアプリの新規登録を行います。

詳細な設定手順は以下にも記載がありますが、リダイレクト URI にはhttps://.console.aws.amazon.com/appflow/oauthを指定します。

アプリケーションを登録出来たら、対象アプリの API のアクセス許可メニューからアプリケーションへの権限を設定します。
ここでは上記ドキュメントに従って Microsoft Graph の一部アクションを委譲させます。
ただし、私が試した際には上記ドキュメントの権限だけだと SharePoint サイトのリストアップが出来なかったのでドキュメントに記載のない権限を別途追加しました。公式ドキュメントの修正を待ちたいですが、うまくいかない方はここの API のアクセス許可を調整してみてください。

アプリを登録し、API のアクセス許可が完了したら、あとは AppFlow で構成するために必要な情報を取得します。
まずは証明書とシークレットメニューからアプリケーションにクライアントシークレットを追加します。
ここで作成したシークレットの値を控えておいてください。

また、アプリの概要から「アプリケーション/クライアント ID」と「ディレクトリ/テナント ID」も取得しましょう。

AppFlow コネクタを構成

下準備が完了したので Amazon AppFlow コネクタを構成しましょう。
構成する際に SharePoint Online サイトのドキュメントを指定する形になるので事前に適当なサイトを作成しておき、ドキュメントにファイルをアップロードしておきます。
本記事では SharePoint Online 上のこのドキュメントを S3 へ連携するフローを実行したいと思います。

AppFlow で SharePoint Online を指定します。
なお、指定出来るのは本日時点では送信元のみとなっており、送信先には指定出来ませんのでご注意ください。

SharePoint Online コネクタを選択すると構成に必要な情報を入力するダイアログを表示されます。
先程 Azure ポータルで取得した値をここで入力しましょう。
上2つはテナント ID です。

接続ボタンを押すと Azure AD でサインインし権限委譲の同意画面が表示されるので Accept します。

そうすると SharePoint Online のサイトが選択出来るようになるはずです。
ここでプログレスリングが回りっぱなしだったり、コミュニケーションサイトとチームサイトの2つのみしか表示されない場合は先程の API アクセス許可を見直してみましょう。

サイトを選択するとドキュメントリソースを選択して送信元の構成は完了です。

送信先に Amazon S3 コネクタを指定し、指定したフォルダにファイルが転送されるようにします。

また、フロー実行時にはファイルの実体に加えて、転送されたファイルに関するメタデータも S3 バケットに格納されます。
次の画面ではメタデータにマッピングするフィールドを指定します。ここでは全てのフィールドをマッピングさせました。

フローを実行

フローの構成が完了したので早速実行してみましょう。

数秒後にフローの実行ログが表示されました。
2 件処理されて転送サイズが表示されています。うまくいってそうですね。

S3 バケットを見てみると期待したとおり SharePoint Online のサイトドキュメント上に格納していたファイルが転送されています。素晴らしい。

連携したサブディレクトリのルートにメタデータが格納されていることも確認出来ました。

参考までにメタデータには以下のような形式でどういったファイルが処理されたのかなどの情報が格納されています。
このファイルにアクセスして色々と後続のカスタム処理を行うことも出来そうですね。

{
    "id": "012QI36XBX3XEQYJF5BJCZL42TMRSF354R",
    "name": "IMG_1747.JPG",
    "webUrl": "https://hogeiwasa.sharepoint.com/sites/hoge-iwasa-communication/Shared%20Documents/hogefolder/IMG_1747.JPG",
    "createdDateTime": "2022-12-22T09:57:59Z",
    "lastModifiedDateTime": "2022-12-22T09:57:59Z",
    "cTag": "\"c:{281EA87B-0D31-428C-A09C-428EC7A19705},2\"",
    "eTag": "\"{281EA87B-0D31-428C-A09C-428EC7A19705},1\"",
    "size": 4249093,
    "createdBy": {
        "user": {
            "email": "hoge@hogeiwasa.onmicrosoft.com",
            "id": "281EA87B-0D31-428C-A09C-428EC7A19705",
            "displayName": "ほげいわさ"
        }
    },
    "lastModifiedBy": {
        "user": {
            "email": "hoge@hogeiwasa.onmicrosoft.com",
            "id": "281EA87B-0D31-428C-A09C-428EC7A19705",
            "displayName": "ほげいわさ"
        }
    },
    "parentReference": {
        "driveType": "documentLibrary",
        "driveId": "b!iOaXnBjzKEmCXsaaukg8DCv_5XJ6sKJAoN_xpbUIuSFe4dC5cszwSYoPm1A2Nb75",
        "id": "012QI36XE6ETMKVGZRCVEJK5N2PZILVHOF",
        "path": "/drives/b!iOaXnBjzKEmCXsaaukg8DCv_5XJ6sKJAoN_xpbUIuSFe4dC5cszwSYoPm1A2Nb75/root:/hogefolder"
    },
    "file": {
        "mimeType": "image/jpeg",
        "hashes": {
            "quickXorHash": "f+L0emR7hCWjwg3XkqCGiNAdpCg="
        }
    },
    "fileSystemInfo": {
        "createdDateTime": "2022-12-22T09:57:59Z",
        "lastModifiedDateTime": "2022-12-22T09:57:59Z"
    },
    "shared": {
        "scope": "users"
    },
    "image": {}
}
:

さいごに

本日は Amazon AppFlow で送信元コネクタに Microsoft SharePoint Online が選択出来るようになったので試してみました。

途中記載しましたが API アクセス許可の問題で最初期待どおり動きませんでしたがそれ以外は概ねうまくいきました。
今回新しいコネクターが追加されたことで、普段 SharePoint でファイルやデータを管理している場合でも、簡単に AppFlow を使って AWS 上へデータを転送して集中管理したりあるいはデータ分析を行いやすくなりそうですね。

Microsoft Teams などを使っていると SharePoint Online でドキュメント共有するケースは非常に多いので、かなり需要あるのではないでしょうか。