Skip to content

Commit 3859a94

Browse files
xchen909shreyapandit
authored andcommitted
fix: fixes unnecessary session call while generating pipeline definition for lambda step (#2824)
1 parent 068ad64 commit 3859a94

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

src/sagemaker/workflow/lambda_step.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ def _get_function_arn(self):
154154
Method creates a lambda function and returns it's arn.
155155
If the lambda is already present, it will build it's arn and return that.
156156
"""
157-
account_id = self.lambda_func.session.account_id()
158157
region = self.lambda_func.session.boto_region_name
159158
if region.lower() == "cn-north-1" or region.lower() == "cn-northwest-1":
160159
partition = "aws-cn"
@@ -163,6 +162,7 @@ def _get_function_arn(self):
163162

164163
if self.lambda_func.function_arn is None:
165164
try:
165+
account_id = self.lambda_func.session.account_id()
166166
response = self.lambda_func.create()
167167
return response["FunctionArn"]
168168
except ValueError as error:

tests/unit/sagemaker/workflow/test_lambda_step.py

+36-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import pytest
1818

19-
from mock import Mock
19+
from mock import Mock, MagicMock
2020

2121
from sagemaker.workflow.parameters import ParameterInteger, ParameterString
2222
from sagemaker.workflow.pipeline import Pipeline
@@ -27,12 +27,13 @@
2727
@pytest.fixture()
2828
def sagemaker_session():
2929
boto_mock = Mock(name="boto_session", region_name="us-west-2")
30-
session_mock = Mock(
30+
session_mock = MagicMock(
3131
name="sagemaker_session",
3232
boto_session=boto_mock,
3333
boto_region_name="us-west-2",
3434
config=None,
3535
local_mode=False,
36+
account_id=Mock(),
3637
)
3738
return session_mock
3839

@@ -173,3 +174,36 @@ def test_lambda_step_no_inputs_outputs(sagemaker_session):
173174
"OutputParameters": [],
174175
"Arguments": {},
175176
}
177+
178+
179+
def test_lambda_step_with_function_arn(sagemaker_session):
180+
lambda_step = LambdaStep(
181+
name="MyLambdaStep",
182+
depends_on=["TestStep"],
183+
lambda_func=Lambda(
184+
function_arn="arn:aws:lambda:us-west-2:123456789012:function:sagemaker_test_lambda",
185+
session=sagemaker_session,
186+
),
187+
inputs={},
188+
outputs=[],
189+
)
190+
lambda_step._get_function_arn()
191+
sagemaker_session.account_id.assert_not_called()
192+
193+
194+
def test_lambda_step_without_function_arn(sagemaker_session):
195+
lambda_step = LambdaStep(
196+
name="MyLambdaStep",
197+
depends_on=["TestStep"],
198+
lambda_func=Lambda(
199+
function_name="name",
200+
execution_role_arn="arn:aws:lambda:us-west-2:123456789012:execution_role",
201+
zipped_code_dir="",
202+
handler="",
203+
session=sagemaker_session,
204+
),
205+
inputs={},
206+
outputs=[],
207+
)
208+
lambda_step._get_function_arn()
209+
sagemaker_session.account_id.assert_called_once()

0 commit comments

Comments
 (0)