@@ -4,10 +4,11 @@ import { RawAwsEcsTask } from '../ecsTask/data'
44import { RawAwsEcsContainer } from '../ecsContainer/data'
55import { RawAwsEcsCluster } from '../ecsCluster/data'
66import { RawAwsEcsTaskDefinition } from '../ecsTaskDefinition/data'
7+ import { RawAwsIamRole } from '../iamRole/data'
78import services from '../../enums/services'
9+ import { globalRegionName } from '../../enums/regions'
810
911export default ( {
10- account,
1112 service,
1213 data,
1314 region,
@@ -19,7 +20,7 @@ export default ({
1920} ) : {
2021 [ property : string ] : ServiceConnection [ ]
2122} => {
22- const { taskArn : id } = service
23+ const { taskArn : id , overrides } = service
2324 const connections : ServiceConnection [ ] = [ ]
2425
2526 /**
@@ -30,8 +31,11 @@ export default ({
3031 data : { [ property : string ] : RawAwsEcsContainer [ ] }
3132 } = data . find ( ( { name } ) => name === services . ecsContainer )
3233 if ( containers ?. data ?. [ region ] ) {
33- const containersInRegion : RawAwsEcsContainer [ ] = containers . data [ region ] . filter (
34- ( { containerInstanceArn } ) => containerInstanceArn === service . containerInstanceArn
34+ const containersInRegion : RawAwsEcsContainer [ ] = containers . data [
35+ region
36+ ] . filter (
37+ ( { containerInstanceArn } ) =>
38+ containerInstanceArn === service . containerInstanceArn
3539 )
3640 if ( ! isEmpty ( containersInRegion ) ) {
3741 for ( const container of containersInRegion ) {
@@ -60,7 +64,6 @@ export default ({
6064 )
6165 if ( ! isEmpty ( clustersInRegion ) ) {
6266 for ( const instance of clustersInRegion ) {
63-
6467 connections . push ( {
6568 id : instance . clusterArn ,
6669 resourceType : services . ecsCluster ,
@@ -79,12 +82,13 @@ export default ({
7982 data : { [ property : string ] : RawAwsEcsTaskDefinition [ ] }
8083 } = data . find ( ( { name } ) => name === services . ecsTaskDefinition )
8184 if ( taskDefinitions ?. data ?. [ region ] ) {
82- const taskDefinitionsInRegion : RawAwsEcsTaskDefinition [ ] = taskDefinitions . data [ region ] . filter (
83- ( { taskDefinitionArn } ) => taskDefinitionArn === service . taskDefinitionArn
84- )
85+ const taskDefinitionsInRegion : RawAwsEcsTaskDefinition [ ] =
86+ taskDefinitions . data [ region ] . filter (
87+ ( { taskDefinitionArn } ) =>
88+ taskDefinitionArn === service . taskDefinitionArn
89+ )
8590 if ( ! isEmpty ( taskDefinitionsInRegion ) ) {
8691 for ( const instance of taskDefinitionsInRegion ) {
87-
8892 connections . push ( {
8993 id : instance . taskDefinitionArn ,
9094 resourceType : services . ecsTaskDefinition ,
@@ -95,6 +99,30 @@ export default ({
9599 }
96100 }
97101
102+ /**
103+ * Find related IAM Roles
104+ */
105+ const roles : { name : string ; data : { [ property : string ] : any [ ] } } =
106+ data . find ( ( { name } ) => name === services . iamRole )
107+ if ( roles ?. data ?. [ globalRegionName ] ) {
108+ const dataAtRegion : RawAwsIamRole [ ] = roles . data [ globalRegionName ] . filter (
109+ ( { Arn } : RawAwsIamRole ) => overrides ?. executionRoleArn === Arn ||
110+ overrides ?. taskRoleArn === Arn
111+ )
112+ if ( ! isEmpty ( dataAtRegion ) ) {
113+ for ( const instance of dataAtRegion ) {
114+ const { Arn : roleId } = instance
115+
116+ connections . push ( {
117+ id : roleId ,
118+ resourceType : services . iamRole ,
119+ relation : 'child' ,
120+ field : 'iamRoles' ,
121+ } )
122+ }
123+ }
124+ }
125+
98126 const result = {
99127 [ id ] : connections ,
100128 }
0 commit comments