Notice
Recent Posts
Recent Comments
Link
투케이2K
978. (Android/Java) [간단 소스] Aws Iot Core 사용자 도메인 구성 목록 확인 - ListDomainConfigurationsRequest 본문
Android
978. (Android/Java) [간단 소스] Aws Iot Core 사용자 도메인 구성 목록 확인 - ListDomainConfigurationsRequest
투케이2K 2025. 4. 28. 20:49[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin

[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java / Kotlin
- 개발 툴 : AndroidStudio
- 기술 구분 : Aws / ListDomainConfigurationsRequest / 사용자 도메인 구성 목록
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[사전) 필요 설정 정리] : build.gradle 의존성 부여
// --------------------------------------------------------------------------------------
// [AWS] : [target 31 이상 의존성]
implementation 'com.amazonaws:aws-android-sdk-kms:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-s3:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-iot:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.57.0'
// [AWS] : [target 31 미만 의존성]
implementation 'com.amazonaws:aws-android-sdk-kms:2.16.13'
implementation 'com.amazonaws:aws-android-sdk-s3:2.16.13'
implementation 'com.amazonaws:aws-android-sdk-iot:2.16.13'
implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.16.13'
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[Java : 소스 코드]
// --------------------------------------------------------------------------------------
// -------------------------------------------------
// [변수 선언]
// -------------------------------------------------
String ACCESS_KEY = "AK...A6";
String SECRET_KEY = "mP...5J";
String REGION = "ap-northeast-1";
// -------------------------------------------------
// [사용자 도메인 구성 목록 확인]
// -------------------------------------------------
public static String provisioning_Domain_List_Error_Message = "";
public static Observable<ArrayList<String>> provisioning_Domain_List(Context mContext, String ACCESS_KEY, String SECRET_KEY, String REGION) {
S_Log._fileSave_(null,ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 수행", new String[]{
"ACCESS_KEY :: " + String.valueOf(ACCESS_KEY),
"SECRET_KEY :: " + String.valueOf(SECRET_KEY),
"REGION :: " + String.valueOf(REGION)
});
// [로직 처리 실시]
return Observable.create(subscriber -> {
try {
// [리턴 변수 선언]
ArrayList<String> returnList = new ArrayList<>();
// [에러 메시지 초기화]
provisioning_Domain_List_Error_Message = "";
// [인풋 데이터 널 체크 수행]
if (mContext != null
&& C_Util.stringNotNull(ACCESS_KEY) == true
&& C_Util.stringNotNull(SECRET_KEY) == true){
// TODO [http 통신을 수행하므로 Thread 처리 수행]
new Thread(){
@Override
public void run(){
// [AWS 자격 증명 설정]
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
// [AWS IoT 클라이언트 생성]
AWSIot iotClient = new AWSIotClient(credentials);
if (C_Util.stringNotNull(REGION) == true){ // TODO [리젼 정보 설정]
//iotClient.setRegion(Region.getRegion("ap-northeast-1"));
iotClient.setRegion(Region.getRegion(REGION));
}
// [ListDomainConfigurationsRequest 생성]
ListDomainConfigurationsRequest request = new ListDomainConfigurationsRequest();
// [로직 처리 수행]
try {
// [도메인 목록 요청 수행]
ListDomainConfigurationsResult result = iotClient.listDomainConfigurations(request);
if (result != null){
List<DomainConfigurationSummary> domains = result.getDomainConfigurations();
if (domains != null && domains.size()>0){
for (int i=0; i<domains.size(); i++) {
DomainConfigurationSummary domainConfigurationSummary = domains.get(i);
JSONObject jsonData = new JSONObject();
jsonData.put("domainConfigurationArn", String.valueOf(domainConfigurationSummary.getDomainConfigurationArn()));
jsonData.put("domainConfigurationName", String.valueOf(domainConfigurationSummary.getDomainConfigurationName()));
jsonData.put("serviceType", String.valueOf(domainConfigurationSummary.getServiceType()));
S_Log.w("KWON_TWOK", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ["+String.valueOf(jsonData)+"] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
returnList.add(String.valueOf(jsonData));
}
// [리턴 데이터 반환]
if (subscriber != null && subscriber.isDisposed() == false) {
//S_Log.w("KWON_TWOK", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [Return_List] : ["+String.valueOf(returnList.size())+"] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
S_Log._fileSave_(null,ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 성공", new String[]{String.valueOf(returnList)});
subscriber.onNext(returnList);
subscriber.onComplete();
}
}
else {
S_Log._fileSave_(null,ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 실패", new String[]{"Domain List Is Null"});
// [리턴 데이터 반환]
if (subscriber != null && subscriber.isDisposed() == false) {
subscriber.onNext(returnList);
subscriber.onComplete();
}
}
}
else {
S_Log._fileSave_(null,ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 실패", new String[]{"ListDomainConfigurationsResult Is Null"});
// [에러 메시지 삽입]
provisioning_Domain_List_Error_Message = C_Format.form_message(new String[]{
"CODE :: " + C_Util.getSourceCodeLine(),
"EXPLANATION :: " + "[프로비저닝] :: 프로비저닝 수행 도메인 주소 목록이 없습니다. (ListDomainConfigurationsResult Is Null)"
});
if (subscriber != null && subscriber.isDisposed() == false){
subscriber.onError(new Throwable(provisioning_Domain_List_Error_Message));
subscriber.onComplete();
}
}
} catch (Exception es) {
es.printStackTrace();
S_Log._fileSave_(null,ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 실패", new String[]{String.valueOf(es.getMessage())});
// [에러 메시지 삽입]
provisioning_Domain_List_Error_Message = C_Format.form_message(new String[]{
"CODE :: " + C_Util.getSourceCodeLine(),
"EXPLANATION :: " + "[프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 중 예외 상황이 발생했습니다.",
"EXCEPTION [1] :: " + String.valueOf(es.getMessage())
});
if (subscriber != null && subscriber.isDisposed() == false){
subscriber.onError(new Throwable(provisioning_Domain_List_Error_Message));
subscriber.onComplete();
}
}
}
}.start();
}
else {
S_Log._E_(ACTIVITY_NAME + " :: provisioning_Domain_List :: [프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 에러", new String[]{"Input Data Is Null (ACCESS_KEY, SECRET_KEY)"});
// [에러 메시지 삽입]
provisioning_Domain_List_Error_Message = C_Format.form_message(new String[]{
"CODE :: " + C_Util.getSourceCodeLine(),
"EXPLANATION :: " + "[프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인에 필요한 필수 값을 확인해주세요.",
"ERROR :: Input Data Is Null (ACCESS_KEY, SECRET_KEY)"
});
if (subscriber != null && subscriber.isDisposed() == false){
subscriber.onError(new Throwable(provisioning_Domain_List_Error_Message));
subscriber.onComplete();
}
}
}
catch (Exception e){
S_Log._printStackTrace_(null, S_FinalData.LOG_BUG_STATE, null, e);
// [에러 메시지 삽입]
provisioning_Domain_List_Error_Message = C_Format.form_message(new String[]{
"CODE :: " + C_Util.getSourceCodeLine(),
"EXPLANATION :: " + "[프로비저닝] :: 프로비저닝 수행 도메인 주소 목록 확인 중 예외 상황이 발생했습니다.",
"EXCEPTION [2] :: " + String.valueOf(e.getMessage())
});
if (subscriber != null && subscriber.isDisposed() == false){
subscriber.onError(new Throwable(provisioning_Domain_List_Error_Message));
subscriber.onComplete();
}
}
});
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Aws Iot Core 프로비저닝 수행 후 생성 된 사물 확인 및 인증서 정보 확인 방법]
https://blog.naver.com/kkh0977/223690097561
[안드로이드 Aws 프로비저닝 로직 정리]
https://blog.naver.com/kkh0977/223558081843?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments