fast-build-update-tool/internal/gamelift/get_instance_access.go (25 lines of code) (raw):
package gamelift
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/gamelift"
)
// InstanceAccessCredentials contains AWS access credentials to get remote SSM access to an instance
type InstanceAccessCredentials struct {
AccessKeyId string
SecretAccessKey string
SessionToken string
}
// GetInstanceAccess will get remote access credentials used to access a GameLift instance using SSM
func (g *GameLiftClient) GetInstanceAccess(ctx context.Context, fleetId string, instanceId string) (*InstanceAccessCredentials, error) {
getAccessOutput, err := g.gamelift.GetComputeAccess(ctx, &gamelift.GetComputeAccessInput{
FleetId: aws.String(fleetId),
ComputeName: aws.String(instanceId),
})
if err != nil {
return nil, err
}
return &InstanceAccessCredentials{
AccessKeyId: *getAccessOutput.Credentials.AccessKeyId,
SecretAccessKey: *getAccessOutput.Credentials.SecretAccessKey,
SessionToken: *getAccessOutput.Credentials.SessionToken,
}, nil
}