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
以下を参照し、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) {
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
);
}
AmazonChime chime = AmazonChimeClientBuilder.standard().withRegion("us-east-1").build();
CreateMeetingRequest meetingReq = new CreateMeetingRequest();
meetingReq.setClientRequestToken("test");
meetingReq.setMediaRegion("ap-northeast-1");
CreateMeetingResult meetingRes = chime.createMeeting(meetingReq);
Meeting meeting = meetingRes.getMeeting();
String meetingId = meeting.getMeetingId();
CreateAttendeeRequest attendeeReq = new CreateAttendeeRequest();
attendeeReq.setExternalUserId("test_user");
attendeeReq.setMeetingId(meetingId);
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"
}
}
サーバサイドの処理については以上となります。ここで生成した情報を利用することで、ミーティングに参加してビデオチャットを行えるようになります。画面の実装については、続きの記事に記載していますので、そちらもご参考ください。
gsol.hatenablog.com