Skip to content

Commit f9c5d91

Browse files
committed
refactor out shared piece
1 parent 6eb3450 commit f9c5d91

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/ecs/util.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { TaskDefinition } from 'aws-sdk/clients/ecs'
1818
import { getLogger } from '../shared/logger'
1919
import { SSM } from 'aws-sdk'
2020
import { fromExtensionManifest } from '../shared/settings'
21+
import { getDeniedSsmActions } from '../shared/remoteSession'
2122

2223
interface EcsTaskIdentifer {
2324
readonly task: string
@@ -41,15 +42,7 @@ export async function checkPermissionsForSsm(
4142
})
4243
}
4344

44-
const deniedActions = await client.getDeniedActions({
45-
PolicySourceArn: task.taskRoleArn,
46-
ActionNames: [
47-
'ssmmessages:CreateControlChannel',
48-
'ssmmessages:CreateDataChannel',
49-
'ssmmessages:OpenControlChannel',
50-
'ssmmessages:OpenDataChannel',
51-
],
52-
})
45+
const deniedActions = await getDeniedSsmActions(client, task.taskRoleArn)
5346

5447
if (deniedActions.length !== 0) {
5548
const message = localize(

src/shared/remoteSession.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { SystemUtilities } from './systemUtilities'
1919
import { getOrInstallCli } from './utilities/cliUtils'
2020
import { pushIf } from './utilities/collectionUtils'
2121
import { ChildProcess } from './utilities/childProcess'
22+
import { IamClient } from './clients/iamClient'
23+
import { IAM } from 'aws-sdk'
2224

2325
export interface MissingTool {
2426
readonly name: 'code' | 'ssm' | 'ssh'
@@ -167,3 +169,17 @@ export async function handleMissingTool(tools: Err<MissingTool[]>) {
167169
})
168170
)
169171
}
172+
173+
export async function getDeniedSsmActions(client: IamClient, roleArn: string): Promise<IAM.EvaluationResult[]> {
174+
const deniedActions = await client.getDeniedActions({
175+
PolicySourceArn: roleArn,
176+
ActionNames: [
177+
'ssmmessages:CreateControlChannel',
178+
'ssmmessages:CreateDataChannel',
179+
'ssmmessages:OpenControlChannel',
180+
'ssmmessages:OpenDataChannel',
181+
],
182+
})
183+
184+
return deniedActions
185+
}

0 commit comments

Comments
 (0)