@@ -3,6 +3,7 @@ import { DateTime } from 'luxon';
33import { SchemaRetriever } from '../schema/SchemaRetriever' ;
44import { CfnExternal } from '../server/CfnExternal' ;
55import { CcapiService } from '../services/CcapiService' ;
6+ import { S3Service } from '../services/S3Service' ;
67import { ISettingsSubscriber , SettingsConfigurable , SettingsSubscription } from '../settings/ISettingsSubscriber' ;
78import { DefaultSettings , ProfileSettings } from '../settings/Settings' ;
89import { LoggerFactory } from '../telemetry/LoggerFactory' ;
@@ -47,6 +48,7 @@ export class ResourceStateManager implements SettingsConfigurable, Closeable {
4748 constructor (
4849 private readonly ccapiService : CcapiService ,
4950 private readonly schemaRetriever : SchemaRetriever ,
51+ private readonly s3Service : S3Service ,
5052 ) {
5153 this . registerCacheGauges ( ) ;
5254 this . initializeCounters ( ) ;
@@ -176,6 +178,23 @@ export class ResourceStateManager implements SettingsConfigurable, Closeable {
176178 }
177179
178180 private async retrieveResourceList ( typeName : string , nextToken ?: string ) : Promise < ResourceList | undefined > {
181+ if ( typeName === 'AWS::S3::Bucket' ) {
182+ try {
183+ const response = await this . s3Service . listBuckets ( this . settings . region , nextToken ) ;
184+ const now = DateTime . now ( ) ;
185+ return {
186+ typeName,
187+ resourceIdentifiers : response . buckets ,
188+ createdTimestamp : now ,
189+ lastUpdatedTimestamp : now ,
190+ nextToken : response . nextToken ,
191+ } ;
192+ } catch ( error ) {
193+ log . error ( error , `S3 ListBuckets failed for region ${ this . settings . region } ` ) ;
194+ return ;
195+ }
196+ }
197+
179198 try {
180199 const output = await this . ccapiService . listResources ( typeName , { nextToken } ) ;
181200
@@ -310,6 +329,6 @@ export class ResourceStateManager implements SettingsConfigurable, Closeable {
310329 }
311330
312331 static create ( external : CfnExternal ) {
313- return new ResourceStateManager ( external . ccapiService , external . schemaRetriever ) ;
332+ return new ResourceStateManager ( external . ccapiService , external . schemaRetriever , external . s3Service ) ;
314333 }
315334}
0 commit comments