この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、森田です。
Amazon Connect インスタンスを起動したいタイミングで Shell からできないかなと思い、調べてみたところプレビュー版APIがありましたので実際に試してみました。
実行環境
実行環境は以下となります。
Python 3.8.5
boto3 1.17.70
Connect インスタンスを作成
boto3の低レベルAPIでcreate_instanceを使用し、インスタンスの作成を行います。 使用したインスタンスの操作ができるようにインスタンスIDはテキストファイルに保存しておきます。
import boto3
import datetime
client = boto3.client('connect')
instance_alias = 'devio-sample'
res = client.create_instance(
IdentityManagementType='CONNECT_MANAGED',
InstanceAlias=instance_alias,
InboundCallsEnabled=True,
OutboundCallsEnabled=True
)
InstanceId = res["Id"]
name = datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S') + 'instance_id.txt'
with open(name, mode='w') as f:
f.write(InstanceId)
print(res)
実行結果
{
"ResponseMetadata": {
"RequestId": "xxxxxxxxx-yyyyyyyy-zzzzzzzz",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"date": "Wed, 06 Apr 2022 03:33:59 GMT",
"content-type": "application/json",
"content-length": "143",
"connection": "keep-alive",
"x-amzn-requestid": "xxxxxxxxx-yyyyyyyy-zzzzzzzz",
"access-control-allow-origin": "*",
"access-control-allow-headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
"x-amz-apigw-id": "xxxxx",
"access-control-allow-methods": "GET,OPTIONS,POST",
"access-control-expose-headers": "x-amzn-RequestId,x-amzn-ErrorType",
"x-amzn-trace-id": "xxxxxxxxx-yyyyyyyy-zzzzzzzz"
},
"RetryAttempts": 0
},
"Id": "aaaa-bbbb-cccc",
"Arn": "arn:aws:connect:ap-northeast-1:000000000000:instance/aaaa-bbbb-cccc"
}
しばらく待つと、AWSコンソール上でインスタンスのステータスがActive
になります。
インスタンスの作成ができましたが、ユーザがないためEmergency accessのみとなってしまいます。
ユーザとしてアクセスできるように、管理者ユーザの作成を行います。
ユーザの作成
ユーザの作成には、RoutingProfileIdとSecurityProfileIdが必要ですので、それぞれの取得を行います。
取得後、それらをcreate_userの引数に指定し、ユーザの作成を行います。
import boto3
client = boto3.client('connect')
with open('2022-04-07-115045instance_id.txt') as f:
InstanceId = f.read()
# RoutingProfileIdを取得する
res = client.list_routing_profiles(
InstanceId=InstanceId
)
RoutingProfileId = res['RoutingProfileSummaryList'][0]['Id']
# SecurityProfileIdsを取得する
res = client.list_security_profiles(
InstanceId=InstanceId
)
SecurityProfileAdminId = list(filter(lambda x: x['Name']=='Admin', res['SecurityProfileSummaryList']))[0]["Id"]
user_name = 'boto3admin'
passwd = 'Sample1234'
f_n = 'chikara'
l_n = 'morita'
mail = 'morita@example.com'
res = client.create_user(
Username=user_name,
Password=passwd,
IdentityInfo={
'FirstName': f_n,
'LastName': l_n,
'Email':mail
},
PhoneConfig={
'PhoneType': 'SOFT_PHONE'
},
SecurityProfileIds=[
SecurityProfileAdminId,
],
RoutingProfileId=RoutingProfileId,
InstanceId=InstanceId
)
print(res)
実行結果
{
"ResponseMetadata": {
"RequestId": "xxxx-yyyy-zzzz",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"date": "Thu, 07 Apr 2022 03:06:21 GMT",
"content-type": "application/json",
"content-length": "194",
"connection": "keep-alive",
"x-amzn-requestid": "xxxx-yyyy-zzzz",
"access-control-allow-origin": "*",
"access-control-allow-headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
"x-amz-apigw-id": "xxxx-yyyy-zzzz",
"access-control-allow-methods": "GET,OPTIONS,POST",
"access-control-expose-headers": "x-amzn-RequestId,x-amzn-ErrorType",
"x-amzn-trace-id": "xxxx-yyyy-zzzz"
},
"RetryAttempts": 0
},
"UserId": "xxxx-yyyy-zzzz",
"UserArn": "arn:aws:connect:ap-northeast-1:000000000000:instance/xxxx-yyyy-zzzz/agent/xxxx-yyyy-zzzz"
}
ユーザ作成後は、ユーザ名・パスワードを使用してログインが可能となります。
Connect インスタンス・ユーザ作成をまとめて行う
先ほど使用したコードを1つのコードにまとめたものが以下となります。
このコードを使用することで、Connect インスタンス・ユーザ作成といった初回のセットアップをShellで完結することができます。
connect_run.py
import argparse
import time
import boto3
client = boto3.client('connect')
parser = argparse.ArgumentParser(description='Setup Amazon Connect Instance')
parser.add_argument('instance_alias', type=str, help='New Instance Alias')
parser.add_argument('user_name', type=str, help='New User Name')
parser.add_argument('passwd', type=str, help='New User Password')
parser.add_argument('f_n', type=str, help='New User first name')
parser.add_argument('l_n', type=str, help='New User last name')
parser.add_argument('mail', type=str, help='New User mail')
args = parser.parse_args()
res = client.create_instance(
IdentityManagementType='CONNECT_MANAGED',
InstanceAlias=args.instance_alias,
InboundCallsEnabled=True,
OutboundCallsEnabled=True
)
assert res['ResponseMetadata']['HTTPStatusCode'] == 200, 'Connect インスタンスが正常に作成できませんでした'
InstanceId = res["Id"]
# インスタンスがACTIVEになるまで待つ
status = ''
while status != 'ACTIVE':
time.sleep(5)
res= client.describe_instance(
InstanceId=InstanceId
)
status = res['Instance'] ['InstanceStatus']
# RoutingProfileIdを取得する
res = client.list_routing_profiles(
InstanceId=InstanceId
)
RoutingProfileId = res['RoutingProfileSummaryList'][0]['Id']
# SecurityProfileIdsを取得する
res = client.list_security_profiles(
InstanceId=InstanceId
)
SecurityProfileAdminId = list(filter(lambda x: x['Name']=='Admin', res['SecurityProfileSummaryList']))[0]['Id']
res = client.create_user(
Username=args.user_name,
Password=args.passwd,
IdentityInfo={
'FirstName': args.f_n,
'LastName': args.l_n,
'Email': args.mail
},
PhoneConfig={
'PhoneType': 'SOFT_PHONE'
},
SecurityProfileIds=[
SecurityProfileAdminId,
],
RoutingProfileId=RoutingProfileId,
InstanceId=InstanceId
)
assert res['ResponseMetadata']['HTTPStatusCode'] == 200, 'Connect ユーザが正常に作成できませんでした'
print('Amazon Connect Setup Done!!')
print('https://{}.my.connect.aws'.format(args.instance_alias))
実行時の引数に
Connect インスタンスのエイリアス、作成するユーザのユーザ名・パスワード・姓・名・メールアドレス
を指定します。
shellからの実行例
$ python connect_run.py devio-sample morita Sample12345 chikara morita sample@exmaple.com
実行結果
Amazon Connect Setup Done!!
https://devio-sample.my.connect.aws
正常に実行されると、Amazon Connect Setup Done!!
が表示されます。
また、実際に表示されたリンクより作成したユーザでログインすることも可能です。
最後に
本記事では、AWS SDK for Python を使用して Amazon Connectインスタンス・ユーザの作成をまとめて行う方法についてご紹介しました。
Amazon Connectインスタンス・ユーザの作成は、CLIでも可能ですので、気になる方は以下をご参照ください。