AWS SDK for Java(以下SDK)を用いて、Amazon Chime(以下Chime)のミーティングと参加者を作成してみたいと思います。
事前準備
credentialsの設定
まず、IAMユーザを作成して「AmazonChimeFullAccess」、「 AmazonChimeSDK」の権限を付与したcredentialsを作成してください。 credentialsをサーバに設定する方法は以下をご参照ください。
https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
AWS SDK for Javaダウンロード
以下を参照し、SDKをダウンロードして展開してください。
https://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/setup-install.html
実装内容
ディレクトリ構成例
{project} │ .classpath │ .project │ ├─.settings │ org.eclipse.jdt.core.prefs │ ├─bin │ └─chime │ createMeeting.class │ ├─lib │ aws-java-sdk-1.11.884.jar │ ├─src │ └─chime │ createMeeting.java │ └─third-party └─lib aspectjrt-1.8.2.jar aspectjweaver.jar aws-swf-build-tools-1.1.jar commons-codec-1.11.jar commons-logging-1.1.3.jar freemarker-2.3.9.jar httpclient-4.5.9.jar httpcore-4.4.11.jar ion-java-1.0.2.jar jackson-annotations-2.6.0.jar jackson-core-2.6.7.jar jackson-databind-2.6.7.3.jar jackson-dataformat-cbor-2.6.7.jar javax.mail-api-1.4.6.jar jmespath-java-1.11.884.jar joda-time-2.8.1.jar netty-buffer-4.1.48.Final.jar netty-codec-4.1.48.Final.jar netty-codec-http-4.1.48.Final.jar netty-common-4.1.48.Final.jar netty-handler-4.1.48.Final.jar netty-resolver-4.1.48.Final.jar netty-transport-4.1.48.Final.jar spring-beans-3.0.7.RELEASE.jar spring-context-3.0.7.RELEASE.jar spring-core-3.0.7.RELEASE.jar spring-test-3.0.7.RELEASE.jar
ダウンロードした「AWS SDK for Java」から持ってきた「{project}/lib」配下と「{project}/third-party/lib」配下のライブラリにはビルド・パスを通してください。
ソース(createMeeting.java)
package chime; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.chime.AmazonChime; import com.amazonaws.services.chime.AmazonChimeClientBuilder; import com.amazonaws.services.chime.model.Attendee; import com.amazonaws.services.chime.model.CreateAttendeeRequest; import com.amazonaws.services.chime.model.CreateAttendeeResult; import com.amazonaws.services.chime.model.Meeting; import com.amazonaws.services.chime.model.CreateMeetingRequest; import com.amazonaws.services.chime.model.CreateMeetingResult; public class createMeeting { public static void main(String[] args) { // credentials確認 ProfileCredentialsProvider credentialsProvider = new ProfileCredentialsProvider(); try { credentialsProvider.getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load the credentials from the credential profiles file. " + "Please make sure that your credentials file is at the correct " + "location (~/.aws/credentials), and is in valid format.", e ); } // Chime リージョン設定 AmazonChime chime = AmazonChimeClientBuilder.standard().withRegion("us-east-1").build(); // Meetingリクエスト作成 CreateMeetingRequest meetingReq = new CreateMeetingRequest(); meetingReq.setClientRequestToken("test"); meetingReq.setMediaRegion("ap-northeast-1"); // Meeting作成 CreateMeetingResult meetingRes = chime.createMeeting(meetingReq); Meeting meeting = meetingRes.getMeeting(); // MeetingId取得 String meetingId = meeting.getMeetingId(); // Attendeeリクエスト作成 CreateAttendeeRequest attendeeReq = new CreateAttendeeRequest(); attendeeReq.setExternalUserId("test_user"); attendeeReq.setMeetingId(meetingId); // Attendee作成 CreateAttendeeResult attendeeRes = chime.createAttendee(attendeeReq); Attendee attendee = attendeeRes.getAttendee(); System.out.println(meeting); System.out.println(attendee); } }
各クラスやメソッドなどは以下を参照してください。
https://sdk.amazonaws.com/java/api/latest/
動作確認
以下の通り、meeting情報とattendee情報が生成されていることが確認できます。 ※一部マスクしてます
・meeting
{ MediaPlacement:{ AudioFallbackUrl: "wss://haxrp.m3.an1.app.chime.aws:443/calls/f02353d3-122c-4c21-9cbb-076e56e2XXXX", AudioHostUrl: "XXXXc6f84f16ea0ec5ddbd5bbab101a5.k.m3.an1.app.chime.aws:3478", ScreenDataUrl: "wss://bitpw.m3.an1.app.chime.aws:443/v2/screen/f02353d3-122c-4c21-9cbb-076e56e2XXXX", ScreenSharingUrl: "wss://bitpw.m3.an1.app.chime.aws:443/v2/screen/f02353d3-122c-4c21-9cbb-076e56e2XXXX", ScreenViewingUrl: "wss://bitpw.m3.an1.app.chime.aws:443/ws/connect?passcode=null&viewer_uuid=null&X-BitHub-Call-Id=f02353d3-122c-4c21-9cbb-076e56e2XXXX", SignalingUrl: "wss://signal.m3.an1.app.chime.aws/control/f02353d3-122c-4c21-9cbb-076e56e2XXXX", TurnControlUrl: "https://ccp.cp.ue1.app.chime.aws/v2/turn_sessions" }, MediaRegion: "ap-northeast-1", MeetingId: "f02353d3-122c-4c21-9cbb-076e56e2XXXX" }
・attendee
{ Attendee:{ AttendeeId: "efca3edd-1973-3801-517f-69cc2df3XXXX", ExternalUserId: "test_user", JoinToken: "ZWZjYTNlZGQtMTk3My0zODAxLTUxN2YtNjljYzJkZjM1YTAyOjA0ODBiN2VmLTcwNTctNGJiNS05NmM0LWI2NmMwOWQ5NDXXXX" } }
サーバサイドの処理については以上となります。ここで生成した情報を利用することで、ミーティングに参加してビデオチャットを行えるようになります。画面の実装については、続きの記事に記載していますので、そちらもご参考ください。